!(function (t, e) {
  if ("object" == typeof exports && "object" == typeof module)
    module.exports = e(require("jquery"));
  else if ("function" == typeof define && define.amd) define(["jquery"], e);
  else {
    var n = "object" == typeof exports ? e(require("jquery")) : e(t.jQuery);
    for (var o in n) ("object" == typeof exports ? exports : t)[o] = n[o];
  }
})(window, function (t) {
  return (function (t) {
    var e = {};
    function n(o) {
      if (e[o]) return e[o].exports;
      var i = (e[o] = { i: o, l: !1, exports: {} });
      return t[o].call(i.exports, i, i.exports, n), (i.l = !0), i.exports;
    }
    return (
      (n.m = t),
      (n.c = e),
      (n.d = function (t, e, o) {
        n.o(t, e) || Object.defineProperty(t, e, { enumerable: !0, get: o });
      }),
      (n.r = function (t) {
        "undefined" != typeof Symbol &&
          Symbol.toStringTag &&
          Object.defineProperty(t, Symbol.toStringTag, { value: "Module" }),
          Object.defineProperty(t, "__esModule", { value: !0 });
      }),
      (n.t = function (t, e) {
        if ((1 & e && (t = n(t)), 8 & e)) return t;
        if (4 & e && "object" == typeof t && t && t.__esModule) return t;
        var o = Object.create(null);
        if (
          (n.r(o),
          Object.defineProperty(o, "default", { enumerable: !0, value: t }),
          2 & e && "string" != typeof t)
        )
          for (var i in t)
            n.d(
              o,
              i,
              function (e) {
                return t[e];
              }.bind(null, i)
            );
        return o;
      }),
      (n.n = function (t) {
        var e =
          t && t.__esModule
            ? function () {
                return t.default;
              }
            : function () {
                return t;
              };
        return n.d(e, "a", e), e;
      }),
      (n.o = function (t, e) {
        return Object.prototype.hasOwnProperty.call(t, e);
      }),
      (n.p = ""),
      n((n.s = 52))
    );
  })({
    0: function (e, n) {
      e.exports = t;
    },
    1: function (t, e, n) {
      "use strict";
      var o = n(0),
        i = n.n(o);
      function r(t) {
        return (r =
          "function" == typeof Symbol && "symbol" == typeof Symbol.iterator
            ? function (t) {
                return typeof t;
              }
            : function (t) {
                return t &&
                  "function" == typeof Symbol &&
                  t.constructor === Symbol &&
                  t !== Symbol.prototype
                  ? "symbol"
                  : typeof t;
              })(t);
      }
      function a(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var s = (function () {
        function t(e, n, o, i) {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.markup = e),
            (this.children = n),
            (this.options = o),
            (this.callback = i);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "render",
              value: function (t) {
                var e = i()(this.markup);
                if (
                  (this.options &&
                    this.options.contents &&
                    e.html(this.options.contents),
                  this.options &&
                    this.options.className &&
                    e.addClass(this.options.className),
                  this.options &&
                    this.options.data &&
                    i.a.each(this.options.data, function (t, n) {
                      e.attr("data-" + t, n);
                    }),
                  this.options &&
                    this.options.click &&
                    e.on("click", this.options.click),
                  this.children)
                ) {
                  var n = e.find(".note-children-container");
                  this.children.forEach(function (t) {
                    t.render(n.length ? n : e);
                  });
                }
                return (
                  this.callback && this.callback(e, this.options),
                  this.options &&
                    this.options.callback &&
                    this.options.callback(e),
                  t && t.append(e),
                  e
                );
              },
            },
          ]) && a(e.prototype, n),
          o && a(e, o),
          t
        );
      })();
      e.a = {
        create: function (t, e) {
          return function () {
            var n = "object" === r(arguments[1]) ? arguments[1] : arguments[0],
              o = Array.isArray(arguments[0]) ? arguments[0] : [];
            return n && n.children && (o = n.children), new s(t, o, n, e);
          };
        },
      };
    },
    2: function (t, e) {
      (function (e) {
        t.exports = e;
      }.call(this, {}));
    },
    3: function (t, e, n) {
      "use strict";
      var o = n(0),
        i = n.n(o);
      (i.a.summernote = i.a.summernote || { lang: {} }),
        i.a.extend(i.a.summernote.lang, {
          "en-US": {
            font: {
              bold: "粗体",
              italic: "斜体",
              underline: "下划线",
              clear: "清除样式",
              height: "行高",
              name: "字体",
              strikethrough: "删除线",
              subscript: "下标",
              superscript: "上标",
              size: "字体大小",
              sizeunit: "Font Size Unit",
            },
            image: {
              image: "图片",
              insert: "插入图片",
              resizeFull: "100%",
              resizeHalf: "50%",
              resizeQuarter: "25%",
              resizeNone: "原始大小",
              floatLeft: "左浮动",
              floatRight: "右浮动",
              floatNone: "清楚浮动",
              shapeRounded: "Shape: Rounded",
              shapeCircle: "Shape: Circle",
              shapeThumbnail: "Shape: Thumbnail",
              shapeNone: "Shape: None",
              dragImageHere: "Drag image or text here",
              dropImage: "Drop image or Text",
              selectFromFiles: "从文件夹中选取",
              maximumFileSize: "Maximum file size",
              maximumFileSizeError: "Maximum file size exceeded.",
              url: "外部图片地址",
              remove: "移除图像",
              original: "Original",
            },
            video: {
              video: "视频",
              videoLink: "视频链接",
              insert: "插入视频",
              url: "视频URL",
              providers:
                "(视频播放地址)",
            },
            link: {
              link: "链接",
              insert: "插入链接",
              unlink: "不可点击",
              edit: "编辑",
              textToDisplay: "文本展示",
              url: "你想要链接到的地址是?",
              openInNewWindow: "在新标签页打开链接",
              useProtocol: "使用默认的协议",
            },
            table: {
              table: "表格",
              addRowAbove: "在上方插入",
              addRowBelow: "在下方插入",
              addColLeft: "在左侧插入",
              addColRight: "在右侧插入",
              delRow: "删除行",
              delCol: "删除列",
              delTable: "删除表格",
            },
            hr: { insert: "Insert Horizontal Rule" },
            style: {
              style: "样式",
              p: "Normal",
              blockquote: "Quote",
              pre: "Code",
              h1: "Header 1",
              h2: "Header 2",
              h3: "Header 3",
              h4: "Header 4",
              h5: "Header 5",
              h6: "Header 6",
            },
            lists: { unordered: "无序列表", ordered: "有序列表" },
            options: {
              help: "帮助",
              fullscreen: "全屏",
              codeview: "代码视图",
            },
            paragraph: {
              paragraph: "段落",
              outdent: "减少缩进",
              indent: "增加缩进",
              left: "左对齐",
              center: "居中",
              right: "右对齐",
              justify: "两端对齐",
            },
            color: {
              recent: "最近颜色",
              more: "更多颜色",
              background: "背景颜色",
              foreground: "文本颜色",
              transparent: "背景透明",
              setTransparent: "设置为透明",
              reset: "重置",
              resetToDefault: "恢复默认设置",
              cpSelect: "选择",
            },
            shortcut: {
              shortcuts: "Keyboard shortcuts",
              close: "Close",
              textFormatting: "Text formatting",
              action: "Action",
              paragraphFormatting: "Paragraph formatting",
              documentStyle: "Document Style",
              extraKeys: "Extra keys",
            },
            help: {
              escape: "Escape",
              insertParagraph: "Insert Paragraph",
              undo: "Undo the last command",
              redo: "Redo the last command",
              tab: "Tab",
              untab: "Untab",
              bold: "Set a bold style",
              italic: "Set a italic style",
              underline: "Set a underline style",
              strikethrough: "Set a strikethrough style",
              removeFormat: "Clean a style",
              justifyLeft: "Set left align",
              justifyCenter: "Set center align",
              justifyRight: "Set right align",
              justifyFull: "Set full align",
              insertUnorderedList: "Toggle unordered list",
              insertOrderedList: "Toggle ordered list",
              outdent: "Outdent on current paragraph",
              indent: "Indent on current paragraph",
              formatPara: "Change current block's format as a paragraph(P tag)",
              formatH1: "Change current block's format as H1",
              formatH2: "Change current block's format as H2",
              formatH3: "Change current block's format as H3",
              formatH4: "Change current block's format as H4",
              formatH5: "Change current block's format as H5",
              formatH6: "Change current block's format as H6",
              insertHorizontalRule: "Insert horizontal rule",
              "linkDialog.show": "Show Link Dialog",
            },
            history: { undo: "Undo", redo: "Redo" },
            specialChar: {
              specialChar: "SPECIAL CHARACTERS",
              select: "Select Special characters",
            },
            output: { noSelection: "No Selection Made!" },
          },
        });
      var r = "function" == typeof define && n(2),
        a = ["sans-serif", "serif", "monospace", "cursive", "fantasy"];
      function s(t) {
        return -1 === i.a.inArray(t.toLowerCase(), a) ? "'".concat(t, "'") : t;
      }
      var l,
        c = navigator.userAgent,
        u = /MSIE|Trident/i.test(c);
      if (u) {
        var d = /MSIE (\d+[.]\d+)/.exec(c);
        d && (l = parseFloat(d[1])),
          (d = /Trident\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(c)) &&
            (l = parseFloat(d[1]));
      }
      var h = /Edge\/\d+/.test(c),
        f =
          "ontouchstart" in window ||
          navigator.MaxTouchPoints > 0 ||
          navigator.msMaxTouchPoints > 0,
        p = u
          ? "DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted"
          : "input",
        m = {
          isMac: navigator.appVersion.indexOf("Mac") > -1,
          isMSIE: u,
          isEdge: h,
          isFF: !h && /firefox/i.test(c),
          isPhantom: /PhantomJS/i.test(c),
          isWebkit: !h && /webkit/i.test(c),
          isChrome: !h && /chrome/i.test(c),
          isSafari: !h && /safari/i.test(c) && !/chrome/i.test(c),
          browserVersion: l,
          jqueryVersion: parseFloat(i.a.fn.jquery),
          isSupportAmd: r,
          isSupportTouch: f,
          isFontInstalled: function (t) {
            var e = "Comic Sans MS" === t ? "Courier New" : "Comic Sans MS",
              n = document.createElement("canvas").getContext("2d");
            n.font = "200px '" + e + "'";
            var o = n.measureText("mmmmmmmmmmwwwww").width;
            return (
              (n.font = "200px " + s(t) + ', "' + e + '"'),
              o !== n.measureText("mmmmmmmmmmwwwww").width
            );
          },
          isW3CRangeSupport: !!document.createRange,
          inputEventName: p,
          genericFontFamilies: a,
          validFontName: s,
        };
      var v = 0;
      var g = {
        eq: function (t) {
          return function (e) {
            return t === e;
          };
        },
        eq2: function (t, e) {
          return t === e;
        },
        peq2: function (t) {
          return function (e, n) {
            return e[t] === n[t];
          };
        },
        ok: function () {
          return !0;
        },
        fail: function () {
          return !1;
        },
        self: function (t) {
          return t;
        },
        not: function (t) {
          return function () {
            return !t.apply(t, arguments);
          };
        },
        and: function (t, e) {
          return function (n) {
            return t(n) && e(n);
          };
        },
        invoke: function (t, e) {
          return function () {
            return t[e].apply(t, arguments);
          };
        },
        resetUniqueId: function () {
          v = 0;
        },
        uniqueId: function (t) {
          var e = ++v + "";
          return t ? t + e : e;
        },
        rect2bnd: function (t) {
          var e = i()(document);
          return {
            top: t.top + e.scrollTop(),
            left: t.left + e.scrollLeft(),
            width: t.right - t.left,
            height: t.bottom - t.top,
          };
        },
        invertObject: function (t) {
          var e = {};
          for (var n in t)
            Object.prototype.hasOwnProperty.call(t, n) && (e[t[n]] = n);
          return e;
        },
        namespaceToCamel: function (t, e) {
          return (
            (e = e || "") +
            t
              .split(".")
              .map(function (t) {
                return t.substring(0, 1).toUpperCase() + t.substring(1);
              })
              .join("")
          );
        },
        debounce: function (t, e, n) {
          var o;
          return function () {
            var i = this,
              r = arguments,
              a = function () {
                (o = null), n || t.apply(i, r);
              },
              s = n && !o;
            clearTimeout(o), (o = setTimeout(a, e)), s && t.apply(i, r);
          };
        },
        isValidUrl: function (t) {
          return /[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi.test(
            t
          );
        },
      };
      function b(t) {
        return t[0];
      }
      function y(t) {
        return t[t.length - 1];
      }
      function k(t) {
        return t.slice(1);
      }
      function w(t, e) {
        if (t && t.length && e) {
          if (t.indexOf) return -1 !== t.indexOf(e);
          if (t.contains) return t.contains(e);
        }
        return !1;
      }
      var C = {
          head: b,
          last: y,
          initial: function (t) {
            return t.slice(0, t.length - 1);
          },
          tail: k,
          prev: function (t, e) {
            if (t && t.length && e) {
              var n = t.indexOf(e);
              return -1 === n ? null : t[n - 1];
            }
            return null;
          },
          next: function (t, e) {
            if (t && t.length && e) {
              var n = t.indexOf(e);
              return -1 === n ? null : t[n + 1];
            }
            return null;
          },
          find: function (t, e) {
            for (var n = 0, o = t.length; n < o; n++) {
              var i = t[n];
              if (e(i)) return i;
            }
          },
          contains: w,
          all: function (t, e) {
            for (var n = 0, o = t.length; n < o; n++) if (!e(t[n])) return !1;
            return !0;
          },
          sum: function (t, e) {
            return (
              (e = e || g.self),
              t.reduce(function (t, n) {
                return t + e(n);
              }, 0)
            );
          },
          from: function (t) {
            for (var e = [], n = t.length, o = -1; ++o < n; ) e[o] = t[o];
            return e;
          },
          isEmpty: function (t) {
            return !t || !t.length;
          },
          clusterBy: function (t, e) {
            return t.length
              ? k(t).reduce(
                  function (t, n) {
                    var o = y(t);
                    return (
                      e(y(o), n) ? (o[o.length] = n) : (t[t.length] = [n]), t
                    );
                  },
                  [[b(t)]]
                )
              : [];
          },
          compact: function (t) {
            for (var e = [], n = 0, o = t.length; n < o; n++)
              t[n] && e.push(t[n]);
            return e;
          },
          unique: function (t) {
            for (var e = [], n = 0, o = t.length; n < o; n++)
              w(e, t[n]) || e.push(t[n]);
            return e;
          },
        },
        x = String.fromCharCode(160);
      function S(t) {
        return t && i()(t).hasClass("note-editable");
      }
      function T(t) {
        return (
          (t = t.toUpperCase()),
          function (e) {
            return e && e.nodeName.toUpperCase() === t;
          }
        );
      }
      function E(t) {
        return t && 3 === t.nodeType;
      }
      function I(t) {
        return (
          t &&
          /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(
            t.nodeName.toUpperCase()
          )
        );
      }
      function $(t) {
        return (
          !S(t) && t && /^DIV|^P|^LI|^H[1-7]/.test(t.nodeName.toUpperCase())
        );
      }
      var N = T("PRE"),
        P = T("LI");
      var R = T("TABLE"),
        L = T("DATA");
      function A(t) {
        return !(B(t) || F(t) || D(t) || $(t) || R(t) || z(t) || L(t));
      }
      function F(t) {
        return t && /^UL|^OL/.test(t.nodeName.toUpperCase());
      }
      var D = T("HR");
      function H(t) {
        return t && /^TD|^TH/.test(t.nodeName.toUpperCase());
      }
      var z = T("BLOCKQUOTE");
      function B(t) {
        return H(t) || z(t) || S(t);
      }
      var M = T("A");
      var O = T("BODY");
      var j = m.isMSIE && m.browserVersion < 11 ? "&nbsp;" : "<br>";
      function U(t) {
        return E(t) ? t.nodeValue.length : t ? t.childNodes.length : 0;
      }
      function W(t) {
        var e = U(t);
        return (
          0 === e ||
          (!E(t) && 1 === e && t.innerHTML === j) ||
          !(!C.all(t.childNodes, E) || "" !== t.innerHTML)
        );
      }
      function K(t) {
        I(t) || U(t) || (t.innerHTML = j);
      }
      function V(t, e) {
        for (; t; ) {
          if (e(t)) return t;
          if (S(t)) break;
          t = t.parentNode;
        }
        return null;
      }
      function q(t, e) {
        e = e || g.fail;
        var n = [];
        return (
          V(t, function (t) {
            return S(t) || n.push(t), e(t);
          }),
          n
        );
      }
      function _(t, e) {
        e = e || g.fail;
        for (var n = []; t && !e(t); ) n.push(t), (t = t.nextSibling);
        return n;
      }
      function G(t, e) {
        var n = e.nextSibling,
          o = e.parentNode;
        return n ? o.insertBefore(t, n) : o.appendChild(t), t;
      }
      function Y(t, e) {
        return (
          i.a.each(e, function (e, n) {
            t.appendChild(n);
          }),
          t
        );
      }
      function Z(t) {
        return 0 === t.offset;
      }
      function X(t) {
        return t.offset === U(t.node);
      }
      function Q(t) {
        return Z(t) || X(t);
      }
      function J(t, e) {
        for (; t && t !== e; ) {
          if (0 !== et(t)) return !1;
          t = t.parentNode;
        }
        return !0;
      }
      function tt(t, e) {
        if (!e) return !1;
        for (; t && t !== e; ) {
          if (et(t) !== U(t.parentNode) - 1) return !1;
          t = t.parentNode;
        }
        return !0;
      }
      function et(t) {
        for (var e = 0; (t = t.previousSibling); ) e += 1;
        return e;
      }
      function nt(t) {
        return !!(t && t.childNodes && t.childNodes.length);
      }
      function ot(t, e) {
        var n, o;
        if (0 === t.offset) {
          if (S(t.node)) return null;
          (n = t.node.parentNode), (o = et(t.node));
        } else
          nt(t.node)
            ? (o = U((n = t.node.childNodes[t.offset - 1])))
            : ((n = t.node), (o = e ? 0 : t.offset - 1));
        return { node: n, offset: o };
      }
      function it(t, e) {
        var n, o;
        if (U(t.node) === t.offset) {
          if (S(t.node)) return null;
          var i = at(t.node);
          i
            ? ((n = i), (o = 0))
            : ((n = t.node.parentNode), (o = et(t.node) + 1));
        } else
          nt(t.node)
            ? ((n = t.node.childNodes[t.offset]), (o = 0))
            : ((n = t.node), (o = e ? U(t.node) : t.offset + 1));
        return { node: n, offset: o };
      }
      function rt(t, e) {
        var n, o;
        if (W(t.node))
          return { node: (n = t.node.nextSibling), offset: (o = 0) };
        if (U(t.node) === t.offset) {
          if (S(t.node)) return null;
          var i = at(t.node);
          i
            ? ((n = i), (o = 0))
            : ((n = t.node.parentNode), (o = et(t.node) + 1)),
            S(n) && ((n = t.node.nextSibling), (o = 0));
        } else if (nt(t.node)) {
          if (((o = 0), W((n = t.node.childNodes[t.offset])))) return null;
        } else if (((n = t.node), (o = e ? U(t.node) : t.offset + 1), W(n)))
          return null;
        return { node: n, offset: o };
      }
      function at(t) {
        if (t.nextSibling && t.parent === t.nextSibling.parent)
          return E(t.nextSibling) ? t.nextSibling : at(t.nextSibling);
      }
      function st(t, e) {
        return t.node === e.node && t.offset === e.offset;
      }
      function lt(t, e) {
        var n = e && e.isSkipPaddingBlankHTML,
          o = e && e.isNotSplitEdgePoint,
          i = e && e.isDiscardEmptySplits;
        if ((i && (n = !0), Q(t) && (E(t.node) || o))) {
          if (Z(t)) return t.node;
          if (X(t)) return t.node.nextSibling;
        }
        if (E(t.node)) return t.node.splitText(t.offset);
        var r = t.node.childNodes[t.offset],
          a = G(t.node.cloneNode(!1), t.node);
        return (
          Y(a, _(r)),
          n || (K(t.node), K(a)),
          i && (W(t.node) && dt(t.node), W(a)) ? (dt(a), t.node.nextSibling) : a
        );
      }
      function ct(t, e, n) {
        var o = q(e.node, g.eq(t));
        return o.length
          ? 1 === o.length
            ? lt(e, n)
            : o.reduce(function (t, o) {
                return (
                  t === e.node && (t = lt(e, n)),
                  lt({ node: o, offset: t ? et(t) : U(o) }, n)
                );
              })
          : null;
      }
      function ut(t) {
        return document.createElement(t);
      }
      function dt(t, e) {
        if (t && t.parentNode) {
          if (t.removeNode) return t.removeNode(e);
          var n = t.parentNode;
          if (!e) {
            for (var o = [], i = 0, r = t.childNodes.length; i < r; i++)
              o.push(t.childNodes[i]);
            for (var a = 0, s = o.length; a < s; a++) n.insertBefore(o[a], t);
          }
          n.removeChild(t);
        }
      }
      var ht = T("TEXTAREA");
      function ft(t, e) {
        var n = ht(t[0]) ? t.val() : t.html();
        return e ? n.replace(/[\n\r]/g, "") : n;
      }
      var pt = {
        NBSP_CHAR: x,
        ZERO_WIDTH_NBSP_CHAR: "\ufeff",
        blank: j,
        emptyPara: "<p>".concat(j, "</p>"),
        makePredByNodeName: T,
        isEditable: S,
        isControlSizing: function (t) {
          return t && i()(t).hasClass("note-control-sizing");
        },
        isText: E,
        isElement: function (t) {
          return t && 1 === t.nodeType;
        },
        isVoid: I,
        isPara: $,
        isPurePara: function (t) {
          return $(t) && !P(t);
        },
        isHeading: function (t) {
          return t && /^H[1-7]/.test(t.nodeName.toUpperCase());
        },
        isInline: A,
        isBlock: g.not(A),
        isBodyInline: function (t) {
          return A(t) && !V(t, $);
        },
        isBody: O,
        isParaInline: function (t) {
          return A(t) && !!V(t, $);
        },
        isPre: N,
        isList: F,
        isTable: R,
        isData: L,
        isCell: H,
        isBlockquote: z,
        isBodyContainer: B,
        isAnchor: M,
        isDiv: T("DIV"),
        isLi: P,
        isBR: T("BR"),
        isSpan: T("SPAN"),
        isB: T("B"),
        isU: T("U"),
        isS: T("S"),
        isI: T("I"),
        isImg: T("IMG"),
        isTextarea: ht,
        deepestChildIsEmpty: function (t) {
          do {
            if (
              null === t.firstElementChild ||
              "" === t.firstElementChild.innerHTML
            )
              break;
          } while ((t = t.firstElementChild));
          return W(t);
        },
        isEmpty: W,
        isEmptyAnchor: g.and(M, W),
        isClosestSibling: function (t, e) {
          return t.nextSibling === e || t.previousSibling === e;
        },
        withClosestSiblings: function (t, e) {
          e = e || g.ok;
          var n = [];
          return (
            t.previousSibling &&
              e(t.previousSibling) &&
              n.push(t.previousSibling),
            n.push(t),
            t.nextSibling && e(t.nextSibling) && n.push(t.nextSibling),
            n
          );
        },
        nodeLength: U,
        isLeftEdgePoint: Z,
        isRightEdgePoint: X,
        isEdgePoint: Q,
        isLeftEdgeOf: J,
        isRightEdgeOf: tt,
        isLeftEdgePointOf: function (t, e) {
          return Z(t) && J(t.node, e);
        },
        isRightEdgePointOf: function (t, e) {
          return X(t) && tt(t.node, e);
        },
        prevPoint: ot,
        nextPoint: it,
        nextPointWithEmptyNode: rt,
        isSamePoint: st,
        isVisiblePoint: function (t) {
          if (E(t.node) || !nt(t.node) || W(t.node)) return !0;
          var e = t.node.childNodes[t.offset - 1],
            n = t.node.childNodes[t.offset];
          return !((e && !I(e)) || (n && !I(n)));
        },
        prevPointUntil: function (t, e) {
          for (; t; ) {
            if (e(t)) return t;
            t = ot(t);
          }
          return null;
        },
        nextPointUntil: function (t, e) {
          for (; t; ) {
            if (e(t)) return t;
            t = it(t);
          }
          return null;
        },
        isCharPoint: function (t) {
          if (!E(t.node)) return !1;
          var e = t.node.nodeValue.charAt(t.offset - 1);
          return e && " " !== e && e !== x;
        },
        isSpacePoint: function (t) {
          if (!E(t.node)) return !1;
          var e = t.node.nodeValue.charAt(t.offset - 1);
          return " " === e || e === x;
        },
        walkPoint: function (t, e, n, o) {
          for (var i = t; i && (n(i), !st(i, e)); ) {
            i = rt(i, o && t.node !== i.node && e.node !== i.node);
          }
        },
        ancestor: V,
        singleChildAncestor: function (t, e) {
          for (t = t.parentNode; t && 1 === U(t); ) {
            if (e(t)) return t;
            if (S(t)) break;
            t = t.parentNode;
          }
          return null;
        },
        listAncestor: q,
        lastAncestor: function (t, e) {
          var n = q(t);
          return C.last(n.filter(e));
        },
        listNext: _,
        listPrev: function (t, e) {
          e = e || g.fail;
          for (var n = []; t && !e(t); ) n.push(t), (t = t.previousSibling);
          return n;
        },
        listDescendant: function (t, e) {
          var n = [];
          return (
            (e = e || g.ok),
            (function o(i) {
              t !== i && e(i) && n.push(i);
              for (var r = 0, a = i.childNodes.length; r < a; r++)
                o(i.childNodes[r]);
            })(t),
            n
          );
        },
        commonAncestor: function (t, e) {
          for (var n = q(t), o = e; o; o = o.parentNode)
            if (n.indexOf(o) > -1) return o;
          return null;
        },
        wrap: function (t, e) {
          var n = t.parentNode,
            o = i()("<" + e + ">")[0];
          return n.insertBefore(o, t), o.appendChild(t), o;
        },
        insertAfter: G,
        appendChildNodes: Y,
        position: et,
        hasChildren: nt,
        makeOffsetPath: function (t, e) {
          return q(e, g.eq(t)).map(et).reverse();
        },
        fromOffsetPath: function (t, e) {
          for (var n = t, o = 0, i = e.length; o < i; o++)
            n =
              n.childNodes.length <= e[o]
                ? n.childNodes[n.childNodes.length - 1]
                : n.childNodes[e[o]];
          return n;
        },
        splitTree: ct,
        splitPoint: function (t, e) {
          var n,
            o,
            i = e ? $ : B,
            r = q(t.node, i),
            a = C.last(r) || t.node;
          i(a) ? ((n = r[r.length - 2]), (o = a)) : (o = (n = a).parentNode);
          var s =
            n &&
            ct(n, t, { isSkipPaddingBlankHTML: e, isNotSplitEdgePoint: e });
          return (
            s || o !== t.node || (s = t.node.childNodes[t.offset]),
            { rightNode: s, container: o }
          );
        },
        create: ut,
        createText: function (t) {
          return document.createTextNode(t);
        },
        remove: dt,
        removeWhile: function (t, e) {
          for (; t && !S(t) && e(t); ) {
            var n = t.parentNode;
            dt(t), (t = n);
          }
        },
        replace: function (t, e) {
          if (t.nodeName.toUpperCase() === e.toUpperCase()) return t;
          var n = ut(e);
          return (
            t.style.cssText && (n.style.cssText = t.style.cssText),
            Y(n, C.from(t.childNodes)),
            G(n, t),
            dt(t),
            n
          );
        },
        html: function (t, e) {
          var n = ft(t);
          if (e) {
            n = (n = n.replace(
              /<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g,
              function (t, e, n) {
                n = n.toUpperCase();
                var o = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(n) && !!e,
                  i = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(n);
                return t + (o || i ? "\n" : "");
              }
            )).trim();
          }
          return n;
        },
        value: ft,
        posFromPlaceholder: function (t) {
          var e = i()(t),
            n = e.offset(),
            o = e.outerHeight(!0);
          return { left: n.left, top: n.top + o };
        },
        attachEvents: function (t, e) {
          Object.keys(e).forEach(function (n) {
            t.on(n, e[n]);
          });
        },
        detachEvents: function (t, e) {
          Object.keys(e).forEach(function (n) {
            t.off(n, e[n]);
          });
        },
        isCustomStyleTag: function (t) {
          return t && !E(t) && C.contains(t.classList, "note-styletag");
        },
      };
      function mt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var vt = (function () {
        function t(e, n) {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.$note = e),
            (this.memos = {}),
            (this.modules = {}),
            (this.layoutInfo = {}),
            (this.options = i.a.extend(!0, {}, n)),
            (i.a.summernote.ui = i.a.summernote.ui_template(this.options)),
            (this.ui = i.a.summernote.ui),
            this.initialize();
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                return (
                  (this.layoutInfo = this.ui.createLayout(this.$note)),
                  this._initialize(),
                  this.$note.hide(),
                  this
                );
              },
            },
            {
              key: "destroy",
              value: function () {
                this._destroy(),
                  this.$note.removeData("summernote"),
                  this.ui.removeLayout(this.$note, this.layoutInfo);
              },
            },
            {
              key: "reset",
              value: function () {
                var t = this.isDisabled();
                this.code(pt.emptyPara),
                  this._destroy(),
                  this._initialize(),
                  t && this.disable();
              },
            },
            {
              key: "_initialize",
              value: function () {
                var t = this;
                (this.options.id = g.uniqueId(i.a.now())),
                  (this.options.container =
                    this.options.container || this.layoutInfo.editor);
                var e = i.a.extend({}, this.options.buttons);
                Object.keys(e).forEach(function (n) {
                  t.memo("button." + n, e[n]);
                });
                var n = i.a.extend(
                  {},
                  this.options.modules,
                  i.a.summernote.plugins || {}
                );
                Object.keys(n).forEach(function (e) {
                  t.module(e, n[e], !0);
                }),
                  Object.keys(this.modules).forEach(function (e) {
                    t.initializeModule(e);
                  });
              },
            },
            {
              key: "_destroy",
              value: function () {
                var t = this;
                Object.keys(this.modules)
                  .reverse()
                  .forEach(function (e) {
                    t.removeModule(e);
                  }),
                  Object.keys(this.memos).forEach(function (e) {
                    t.removeMemo(e);
                  }),
                  this.triggerEvent("destroy", this);
              },
            },
            {
              key: "code",
              value: function (t) {
                var e = this.invoke("codeview.isActivated");
                if (void 0 === t)
                  return (
                    this.invoke("codeview.sync"),
                    e
                      ? this.layoutInfo.codable.val()
                      : this.layoutInfo.editable.html()
                  );
                e
                  ? this.invoke("codeview.sync", t)
                  : this.layoutInfo.editable.html(t),
                  this.$note.val(t),
                  this.triggerEvent("change", t, this.layoutInfo.editable);
              },
            },
            {
              key: "isDisabled",
              value: function () {
                return (
                  "false" === this.layoutInfo.editable.attr("contenteditable")
                );
              },
            },
            {
              key: "enable",
              value: function () {
                this.layoutInfo.editable.attr("contenteditable", !0),
                  this.invoke("toolbar.activate", !0),
                  this.triggerEvent("disable", !1),
                  (this.options.editing = !0);
              },
            },
            {
              key: "disable",
              value: function () {
                this.invoke("codeview.isActivated") &&
                  this.invoke("codeview.deactivate"),
                  this.layoutInfo.editable.attr("contenteditable", !1),
                  (this.options.editing = !1),
                  this.invoke("toolbar.deactivate", !0),
                  this.triggerEvent("disable", !0);
              },
            },
            {
              key: "triggerEvent",
              value: function () {
                var t = C.head(arguments),
                  e = C.tail(C.from(arguments)),
                  n = this.options.callbacks[g.namespaceToCamel(t, "on")];
                n && n.apply(this.$note[0], e),
                  this.$note.trigger("summernote." + t, e);
              },
            },
            {
              key: "initializeModule",
              value: function (t) {
                var e = this.modules[t];
                (e.shouldInitialize = e.shouldInitialize || g.ok),
                  e.shouldInitialize() &&
                    (e.initialize && e.initialize(),
                    e.events && pt.attachEvents(this.$note, e.events));
              },
            },
            {
              key: "module",
              value: function (t, e, n) {
                if (1 === arguments.length) return this.modules[t];
                (this.modules[t] = new e(this)), n || this.initializeModule(t);
              },
            },
            {
              key: "removeModule",
              value: function (t) {
                var e = this.modules[t];
                e.shouldInitialize() &&
                  (e.events && pt.detachEvents(this.$note, e.events),
                  e.destroy && e.destroy()),
                  delete this.modules[t];
              },
            },
            {
              key: "memo",
              value: function (t, e) {
                if (1 === arguments.length) return this.memos[t];
                this.memos[t] = e;
              },
            },
            {
              key: "removeMemo",
              value: function (t) {
                this.memos[t] &&
                  this.memos[t].destroy &&
                  this.memos[t].destroy(),
                  delete this.memos[t];
              },
            },
            {
              key: "createInvokeHandlerAndUpdateState",
              value: function (t, e) {
                var n = this;
                return function (o) {
                  n.createInvokeHandler(t, e)(o),
                    n.invoke("buttons.updateCurrentStyle");
                };
              },
            },
            {
              key: "createInvokeHandler",
              value: function (t, e) {
                var n = this;
                return function (o) {
                  o.preventDefault();
                  var r = i()(o.target);
                  n.invoke(t, e || r.closest("[data-value]").data("value"), r);
                };
              },
            },
            {
              key: "invoke",
              value: function () {
                var t = C.head(arguments),
                  e = C.tail(C.from(arguments)),
                  n = t.split("."),
                  o = n.length > 1,
                  i = o && C.head(n),
                  r = o ? C.last(n) : C.head(n),
                  a = this.modules[i || "editor"];
                return !i && this[r]
                  ? this[r].apply(this, e)
                  : a && a[r] && a.shouldInitialize()
                  ? a[r].apply(a, e)
                  : void 0;
              },
            },
          ]) && mt(e.prototype, n),
          o && mt(e, o),
          t
        );
      })();
      function gt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      function bt(t, e) {
        var n,
          o,
          i = t.parentElement(),
          r = document.body.createTextRange(),
          a = C.from(i.childNodes);
        for (n = 0; n < a.length; n++)
          if (!pt.isText(a[n])) {
            if (
              (r.moveToElementText(a[n]),
              r.compareEndPoints("StartToStart", t) >= 0)
            )
              break;
            o = a[n];
          }
        if (0 !== n && pt.isText(a[n - 1])) {
          var s = document.body.createTextRange(),
            l = null;
          s.moveToElementText(o || i),
            s.collapse(!o),
            (l = o ? o.nextSibling : i.firstChild);
          var c = t.duplicate();
          c.setEndPoint("StartToStart", s);
          for (
            var u = c.text.replace(/[\r\n]/g, "").length;
            u > l.nodeValue.length && l.nextSibling;

          )
            (u -= l.nodeValue.length), (l = l.nextSibling);
          l.nodeValue;
          e &&
            l.nextSibling &&
            pt.isText(l.nextSibling) &&
            u === l.nodeValue.length &&
            ((u -= l.nodeValue.length), (l = l.nextSibling)),
            (i = l),
            (n = u);
        }
        return { cont: i, offset: n };
      }
      function yt(t) {
        var e = document.body.createTextRange(),
          n = (function t(e, n) {
            var o, i;
            if (pt.isText(e)) {
              var r = pt.listPrev(e, g.not(pt.isText)),
                a = C.last(r).previousSibling;
              (o = a || e.parentNode),
                (n += C.sum(C.tail(r), pt.nodeLength)),
                (i = !a);
            } else {
              if (((o = e.childNodes[n] || e), pt.isText(o))) return t(o, 0);
              (n = 0), (i = !1);
            }
            return { node: o, collapseToStart: i, offset: n };
          })(t.node, t.offset);
        return (
          e.moveToElementText(n.node),
          e.collapse(n.collapseToStart),
          e.moveStart("character", n.offset),
          e
        );
      }
      i.a.fn.extend({
        summernote: function () {
          var t = i.a.type(C.head(arguments)),
            e = "string" === t,
            n = "object" === t,
            o = i.a.extend(
              {},
              i.a.summernote.options,
              n ? C.head(arguments) : {}
            );
          (o.langInfo = i.a.extend(
            !0,
            {},
            i.a.summernote.lang["en-US"],
            i.a.summernote.lang[o.lang]
          )),
            (o.icons = i.a.extend(
              !0,
              {},
              i.a.summernote.options.icons,
              o.icons
            )),
            (o.tooltip = "auto" === o.tooltip ? !m.isSupportTouch : o.tooltip),
            this.each(function (t, e) {
              var n = i()(e);
              if (!n.data("summernote")) {
                var r = new vt(n, o);
                n.data("summernote", r),
                  n.data("summernote").triggerEvent("init", r.layoutInfo);
              }
            });
          var r = this.first();
          if (r.length) {
            var a = r.data("summernote");
            if (e) return a.invoke.apply(a, C.from(arguments));
            o.focus && a.invoke("editor.focus");
          }
          return this;
        },
      });
      var kt = (function () {
          function t(e, n, o, i) {
            !(function (t, e) {
              if (!(t instanceof e))
                throw new TypeError("Cannot call a class as a function");
            })(this, t),
              (this.sc = e),
              (this.so = n),
              (this.ec = o),
              (this.eo = i),
              (this.isOnEditable = this.makeIsOn(pt.isEditable)),
              (this.isOnList = this.makeIsOn(pt.isList)),
              (this.isOnAnchor = this.makeIsOn(pt.isAnchor)),
              (this.isOnCell = this.makeIsOn(pt.isCell)),
              (this.isOnData = this.makeIsOn(pt.isData));
          }
          var e, n, o;
          return (
            (e = t),
            (n = [
              {
                key: "nativeRange",
                value: function () {
                  if (m.isW3CRangeSupport) {
                    var t = document.createRange();
                    return (
                      t.setStart(this.sc, this.so),
                      t.setEnd(this.ec, this.eo),
                      t
                    );
                  }
                  var e = yt({ node: this.sc, offset: this.so });
                  return (
                    e.setEndPoint(
                      "EndToEnd",
                      yt({ node: this.ec, offset: this.eo })
                    ),
                    e
                  );
                },
              },
              {
                key: "getPoints",
                value: function () {
                  return { sc: this.sc, so: this.so, ec: this.ec, eo: this.eo };
                },
              },
              {
                key: "getStartPoint",
                value: function () {
                  return { node: this.sc, offset: this.so };
                },
              },
              {
                key: "getEndPoint",
                value: function () {
                  return { node: this.ec, offset: this.eo };
                },
              },
              {
                key: "select",
                value: function () {
                  var t = this.nativeRange();
                  if (m.isW3CRangeSupport) {
                    var e = document.getSelection();
                    e.rangeCount > 0 && e.removeAllRanges(), e.addRange(t);
                  } else t.select();
                  return this;
                },
              },
              {
                key: "scrollIntoView",
                value: function (t) {
                  var e = i()(t).height();
                  return (
                    t.scrollTop + e < this.sc.offsetTop &&
                      (t.scrollTop += Math.abs(
                        t.scrollTop + e - this.sc.offsetTop
                      )),
                    this
                  );
                },
              },
              {
                key: "normalize",
                value: function () {
                  var e = function (t, e) {
                      if (!t) return t;
                      if (
                        pt.isVisiblePoint(t) &&
                        (!pt.isEdgePoint(t) ||
                          (pt.isRightEdgePoint(t) && !e) ||
                          (pt.isLeftEdgePoint(t) && e) ||
                          (pt.isRightEdgePoint(t) &&
                            e &&
                            pt.isVoid(t.node.nextSibling)) ||
                          (pt.isLeftEdgePoint(t) &&
                            !e &&
                            pt.isVoid(t.node.previousSibling)) ||
                          (pt.isBlock(t.node) && pt.isEmpty(t.node)))
                      )
                        return t;
                      var n = pt.ancestor(t.node, pt.isBlock),
                        o = !1;
                      if (!o) {
                        var i = pt.prevPoint(t) || { node: null };
                        o =
                          (pt.isLeftEdgePointOf(t, n) || pt.isVoid(i.node)) &&
                          !e;
                      }
                      var r = !1;
                      if (!r) {
                        var a = pt.nextPoint(t) || { node: null };
                        r =
                          (pt.isRightEdgePointOf(t, n) || pt.isVoid(a.node)) &&
                          e;
                      }
                      if (o || r) {
                        if (pt.isVisiblePoint(t)) return t;
                        e = !e;
                      }
                      return (
                        (e
                          ? pt.nextPointUntil(
                              pt.nextPoint(t),
                              pt.isVisiblePoint
                            )
                          : pt.prevPointUntil(
                              pt.prevPoint(t),
                              pt.isVisiblePoint
                            )) || t
                      );
                    },
                    n = e(this.getEndPoint(), !1),
                    o = this.isCollapsed() ? n : e(this.getStartPoint(), !0);
                  return new t(o.node, o.offset, n.node, n.offset);
                },
              },
              {
                key: "nodes",
                value: function (t, e) {
                  t = t || g.ok;
                  var n = e && e.includeAncestor,
                    o = e && e.fullyContains,
                    i = this.getStartPoint(),
                    r = this.getEndPoint(),
                    a = [],
                    s = [];
                  return (
                    pt.walkPoint(
                      i,
                      r,
                      function (e) {
                        var i;
                        pt.isEditable(e.node) ||
                          (o
                            ? (pt.isLeftEdgePoint(e) && s.push(e.node),
                              pt.isRightEdgePoint(e) &&
                                C.contains(s, e.node) &&
                                (i = e.node))
                            : (i = n ? pt.ancestor(e.node, t) : e.node),
                          i && t(i) && a.push(i));
                      },
                      !0
                    ),
                    C.unique(a)
                  );
                },
              },
              {
                key: "commonAncestor",
                value: function () {
                  return pt.commonAncestor(this.sc, this.ec);
                },
              },
              {
                key: "expand",
                value: function (e) {
                  var n = pt.ancestor(this.sc, e),
                    o = pt.ancestor(this.ec, e);
                  if (!n && !o)
                    return new t(this.sc, this.so, this.ec, this.eo);
                  var i = this.getPoints();
                  return (
                    n && ((i.sc = n), (i.so = 0)),
                    o && ((i.ec = o), (i.eo = pt.nodeLength(o))),
                    new t(i.sc, i.so, i.ec, i.eo)
                  );
                },
              },
              {
                key: "collapse",
                value: function (e) {
                  return e
                    ? new t(this.sc, this.so, this.sc, this.so)
                    : new t(this.ec, this.eo, this.ec, this.eo);
                },
              },
              {
                key: "splitText",
                value: function () {
                  var e = this.sc === this.ec,
                    n = this.getPoints();
                  return (
                    pt.isText(this.ec) &&
                      !pt.isEdgePoint(this.getEndPoint()) &&
                      this.ec.splitText(this.eo),
                    pt.isText(this.sc) &&
                      !pt.isEdgePoint(this.getStartPoint()) &&
                      ((n.sc = this.sc.splitText(this.so)),
                      (n.so = 0),
                      e && ((n.ec = n.sc), (n.eo = this.eo - this.so))),
                    new t(n.sc, n.so, n.ec, n.eo)
                  );
                },
              },
              {
                key: "deleteContents",
                value: function () {
                  if (this.isCollapsed()) return this;
                  var e = this.splitText(),
                    n = e.nodes(null, { fullyContains: !0 }),
                    o = pt.prevPointUntil(e.getStartPoint(), function (t) {
                      return !C.contains(n, t.node);
                    }),
                    r = [];
                  return (
                    i.a.each(n, function (t, e) {
                      var n = e.parentNode;
                      o.node !== n && 1 === pt.nodeLength(n) && r.push(n),
                        pt.remove(e, !1);
                    }),
                    i.a.each(r, function (t, e) {
                      pt.remove(e, !1);
                    }),
                    new t(o.node, o.offset, o.node, o.offset).normalize()
                  );
                },
              },
              {
                key: "makeIsOn",
                value: function (t) {
                  return function () {
                    var e = pt.ancestor(this.sc, t);
                    return !!e && e === pt.ancestor(this.ec, t);
                  };
                },
              },
              {
                key: "isLeftEdgeOf",
                value: function (t) {
                  if (!pt.isLeftEdgePoint(this.getStartPoint())) return !1;
                  var e = pt.ancestor(this.sc, t);
                  return e && pt.isLeftEdgeOf(this.sc, e);
                },
              },
              {
                key: "isCollapsed",
                value: function () {
                  return this.sc === this.ec && this.so === this.eo;
                },
              },
              {
                key: "wrapBodyInlineWithPara",
                value: function () {
                  if (pt.isBodyContainer(this.sc) && pt.isEmpty(this.sc))
                    return (
                      (this.sc.innerHTML = pt.emptyPara),
                      new t(this.sc.firstChild, 0, this.sc.firstChild, 0)
                    );
                  var e,
                    n = this.normalize();
                  if (pt.isParaInline(this.sc) || pt.isPara(this.sc)) return n;
                  if (pt.isInline(n.sc)) {
                    var o = pt.listAncestor(n.sc, g.not(pt.isInline));
                    (e = C.last(o)),
                      pt.isInline(e) ||
                        (e = o[o.length - 2] || n.sc.childNodes[n.so]);
                  } else e = n.sc.childNodes[n.so > 0 ? n.so - 1 : 0];
                  if (e) {
                    var i = pt.listPrev(e, pt.isParaInline).reverse();
                    if (
                      (i = i.concat(
                        pt.listNext(e.nextSibling, pt.isParaInline)
                      )).length
                    ) {
                      var r = pt.wrap(C.head(i), "p");
                      pt.appendChildNodes(r, C.tail(i));
                    }
                  }
                  return this.normalize();
                },
              },
              {
                key: "insertNode",
                value: function (t) {
                  var e = this;
                  (pt.isText(t) || pt.isInline(t)) &&
                    (e = this.wrapBodyInlineWithPara().deleteContents());
                  var n = pt.splitPoint(e.getStartPoint(), pt.isInline(t));
                  return (
                    n.rightNode
                      ? (n.rightNode.parentNode.insertBefore(t, n.rightNode),
                        pt.isEmpty(n.rightNode) &&
                          pt.isPara(t) &&
                          n.rightNode.parentNode.removeChild(n.rightNode))
                      : n.container.appendChild(t),
                    t
                  );
                },
              },
              {
                key: "pasteHTML",
                value: function (t) {
                  t = i.a.trim(t);
                  var e = i()("<div></div>").html(t)[0],
                    n = C.from(e.childNodes),
                    o = this,
                    r = !1;
                  return (
                    o.so >= 0 && ((n = n.reverse()), (r = !0)),
                    (n = n.map(function (t) {
                      return o.insertNode(t);
                    })),
                    r && (n = n.reverse()),
                    n
                  );
                },
              },
              {
                key: "toString",
                value: function () {
                  var t = this.nativeRange();
                  return m.isW3CRangeSupport ? t.toString() : t.text;
                },
              },
              {
                key: "getWordRange",
                value: function (e) {
                  var n = this.getEndPoint();
                  if (!pt.isCharPoint(n)) return this;
                  var o = pt.prevPointUntil(n, function (t) {
                    return !pt.isCharPoint(t);
                  });
                  return (
                    e &&
                      (n = pt.nextPointUntil(n, function (t) {
                        return !pt.isCharPoint(t);
                      })),
                    new t(o.node, o.offset, n.node, n.offset)
                  );
                },
              },
              {
                key: "getWordsRange",
                value: function (e) {
                  var n = this.getEndPoint(),
                    o = function (t) {
                      return !pt.isCharPoint(t) && !pt.isSpacePoint(t);
                    };
                  if (o(n)) return this;
                  var i = pt.prevPointUntil(n, o);
                  return (
                    e && (n = pt.nextPointUntil(n, o)),
                    new t(i.node, i.offset, n.node, n.offset)
                  );
                },
              },
              {
                key: "getWordsMatchRange",
                value: function (e) {
                  var n = this.getEndPoint(),
                    o = pt.prevPointUntil(n, function (o) {
                      if (!pt.isCharPoint(o) && !pt.isSpacePoint(o)) return !0;
                      var i = new t(o.node, o.offset, n.node, n.offset),
                        r = e.exec(i.toString());
                      return r && 0 === r.index;
                    }),
                    i = new t(o.node, o.offset, n.node, n.offset),
                    r = i.toString(),
                    a = e.exec(r);
                  return a && a[0].length === r.length ? i : null;
                },
              },
              {
                key: "bookmark",
                value: function (t) {
                  return {
                    s: { path: pt.makeOffsetPath(t, this.sc), offset: this.so },
                    e: { path: pt.makeOffsetPath(t, this.ec), offset: this.eo },
                  };
                },
              },
              {
                key: "paraBookmark",
                value: function (t) {
                  return {
                    s: {
                      path: C.tail(pt.makeOffsetPath(C.head(t), this.sc)),
                      offset: this.so,
                    },
                    e: {
                      path: C.tail(pt.makeOffsetPath(C.last(t), this.ec)),
                      offset: this.eo,
                    },
                  };
                },
              },
              {
                key: "getClientRects",
                value: function () {
                  return this.nativeRange().getClientRects();
                },
              },
            ]) && gt(e.prototype, n),
            o && gt(e, o),
            t
          );
        })(),
        wt = {
          create: function (t, e, n, o) {
            if (4 === arguments.length) return new kt(t, e, n, o);
            if (2 === arguments.length) return new kt(t, e, (n = t), (o = e));
            var i = this.createFromSelection();
            if (!i && 1 === arguments.length) {
              var r = arguments[0];
              return (
                pt.isEditable(r) && (r = r.lastChild),
                this.createFromBodyElement(
                  r,
                  pt.emptyPara === arguments[0].innerHTML
                )
              );
            }
            return i;
          },
          createFromBodyElement: function (t) {
            var e =
                arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
              n = this.createFromNode(t);
            return n.collapse(e);
          },
          createFromSelection: function () {
            var t, e, n, o;
            if (m.isW3CRangeSupport) {
              var i = document.getSelection();
              if (!i || 0 === i.rangeCount) return null;
              if (pt.isBody(i.anchorNode)) return null;
              var r = i.getRangeAt(0);
              (t = r.startContainer),
                (e = r.startOffset),
                (n = r.endContainer),
                (o = r.endOffset);
            } else {
              var a = document.selection.createRange(),
                s = a.duplicate();
              s.collapse(!1);
              var l = a;
              l.collapse(!0);
              var c = bt(l, !0),
                u = bt(s, !1);
              pt.isText(c.node) &&
                pt.isLeftEdgePoint(c) &&
                pt.isTextNode(u.node) &&
                pt.isRightEdgePoint(u) &&
                u.node.nextSibling === c.node &&
                (c = u),
                (t = c.cont),
                (e = c.offset),
                (n = u.cont),
                (o = u.offset);
            }
            return new kt(t, e, n, o);
          },
          createFromNode: function (t) {
            var e = t,
              n = 0,
              o = t,
              i = pt.nodeLength(o);
            return (
              pt.isVoid(e) &&
                ((n = pt.listPrev(e).length - 1), (e = e.parentNode)),
              pt.isBR(o)
                ? ((i = pt.listPrev(o).length - 1), (o = o.parentNode))
                : pt.isVoid(o) &&
                  ((i = pt.listPrev(o).length), (o = o.parentNode)),
              this.create(e, n, o, i)
            );
          },
          createFromNodeBefore: function (t) {
            return this.createFromNode(t).collapse(!0);
          },
          createFromNodeAfter: function (t) {
            return this.createFromNode(t).collapse();
          },
          createFromBookmark: function (t, e) {
            var n = pt.fromOffsetPath(t, e.s.path),
              o = e.s.offset,
              i = pt.fromOffsetPath(t, e.e.path),
              r = e.e.offset;
            return new kt(n, o, i, r);
          },
          createFromParaBookmark: function (t, e) {
            var n = t.s.offset,
              o = t.e.offset,
              i = pt.fromOffsetPath(C.head(e), t.s.path),
              r = pt.fromOffsetPath(C.last(e), t.e.path);
            return new kt(i, n, r, o);
          },
        },
        Ct = {
          BACKSPACE: 8,
          TAB: 9,
          ENTER: 13,
          ESCAPE: 27,
          SPACE: 32,
          DELETE: 46,
          LEFT: 37,
          UP: 38,
          RIGHT: 39,
          DOWN: 40,
          NUM0: 48,
          NUM1: 49,
          NUM2: 50,
          NUM3: 51,
          NUM4: 52,
          NUM5: 53,
          NUM6: 54,
          NUM7: 55,
          NUM8: 56,
          B: 66,
          E: 69,
          I: 73,
          J: 74,
          K: 75,
          L: 76,
          R: 82,
          S: 83,
          U: 85,
          V: 86,
          Y: 89,
          Z: 90,
          SLASH: 191,
          LEFTBRACKET: 219,
          BACKSLASH: 220,
          RIGHTBRACKET: 221,
          HOME: 36,
          END: 35,
          PAGEUP: 33,
          PAGEDOWN: 34,
        },
        xt = {
          isEdit: function (t) {
            return C.contains(
              [Ct.BACKSPACE, Ct.TAB, Ct.ENTER, Ct.SPACE, Ct.DELETE],
              t
            );
          },
          isMove: function (t) {
            return C.contains([Ct.LEFT, Ct.UP, Ct.RIGHT, Ct.DOWN], t);
          },
          isNavigation: function (t) {
            return C.contains([Ct.HOME, Ct.END, Ct.PAGEUP, Ct.PAGEDOWN], t);
          },
          nameFromCode: g.invertObject(Ct),
          code: Ct,
        };
      function St(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var Tt = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.stack = []),
            (this.stackOffset = -1),
            (this.context = e),
            (this.$editable = e.layoutInfo.editable),
            (this.editable = this.$editable[0]);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "makeSnapshot",
              value: function () {
                var t = wt.create(this.editable);
                return {
                  contents: this.$editable.html(),
                  bookmark:
                    t && t.isOnEditable()
                      ? t.bookmark(this.editable)
                      : {
                          s: { path: [], offset: 0 },
                          e: { path: [], offset: 0 },
                        },
                };
              },
            },
            {
              key: "applySnapshot",
              value: function (t) {
                null !== t.contents && this.$editable.html(t.contents),
                  null !== t.bookmark &&
                    wt.createFromBookmark(this.editable, t.bookmark).select();
              },
            },
            {
              key: "rewind",
              value: function () {
                this.$editable.html() !==
                  this.stack[this.stackOffset].contents && this.recordUndo(),
                  (this.stackOffset = 0),
                  this.applySnapshot(this.stack[this.stackOffset]);
              },
            },
            {
              key: "commit",
              value: function () {
                (this.stack = []), (this.stackOffset = -1), this.recordUndo();
              },
            },
            {
              key: "reset",
              value: function () {
                (this.stack = []),
                  (this.stackOffset = -1),
                  this.$editable.html(""),
                  this.recordUndo();
              },
            },
            {
              key: "undo",
              value: function () {
                this.$editable.html() !==
                  this.stack[this.stackOffset].contents && this.recordUndo(),
                  this.stackOffset > 0 &&
                    (this.stackOffset--,
                    this.applySnapshot(this.stack[this.stackOffset]));
              },
            },
            {
              key: "redo",
              value: function () {
                this.stack.length - 1 > this.stackOffset &&
                  (this.stackOffset++,
                  this.applySnapshot(this.stack[this.stackOffset]));
              },
            },
            {
              key: "recordUndo",
              value: function () {
                this.stackOffset++,
                  this.stack.length > this.stackOffset &&
                    (this.stack = this.stack.slice(0, this.stackOffset)),
                  this.stack.push(this.makeSnapshot()),
                  this.stack.length > this.context.options.historyLimit &&
                    (this.stack.shift(), (this.stackOffset -= 1));
              },
            },
          ]) && St(e.prototype, n),
          o && St(e, o),
          t
        );
      })();
      function Et(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var It = (function () {
        function t() {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "jQueryCSS",
              value: function (t, e) {
                if (m.jqueryVersion < 1.9) {
                  var n = {};
                  return (
                    i.a.each(e, function (e, o) {
                      n[o] = t.css(o);
                    }),
                    n
                  );
                }
                return t.css(e);
              },
            },
            {
              key: "fromNode",
              value: function (t) {
                var e =
                    this.jQueryCSS(t, [
                      "font-family",
                      "font-size",
                      "text-align",
                      "list-style-type",
                      "line-height",
                    ]) || {},
                  n = t[0].style.fontSize || e["font-size"];
                return (
                  (e["font-size"] = parseInt(n, 10)),
                  (e["font-size-unit"] = n.match(/[a-z%]+$/)),
                  e
                );
              },
            },
            {
              key: "stylePara",
              value: function (t, e) {
                i.a.each(
                  t.nodes(pt.isPara, { includeAncestor: !0 }),
                  function (t, n) {
                    i()(n).css(e);
                  }
                );
              },
            },
            {
              key: "styleNodes",
              value: function (t, e) {
                t = t.splitText();
                var n = (e && e.nodeName) || "SPAN",
                  o = !(!e || !e.expandClosestSibling),
                  r = !(!e || !e.onlyPartialContains);
                if (t.isCollapsed()) return [t.insertNode(pt.create(n))];
                var a = pt.makePredByNodeName(n),
                  s = t
                    .nodes(pt.isText, { fullyContains: !0 })
                    .map(function (t) {
                      return pt.singleChildAncestor(t, a) || pt.wrap(t, n);
                    });
                if (o) {
                  if (r) {
                    var l = t.nodes();
                    a = g.and(a, function (t) {
                      return C.contains(l, t);
                    });
                  }
                  return s.map(function (t) {
                    var e = pt.withClosestSiblings(t, a),
                      n = C.head(e),
                      o = C.tail(e);
                    return (
                      i.a.each(o, function (t, e) {
                        pt.appendChildNodes(n, e.childNodes), pt.remove(e);
                      }),
                      C.head(e)
                    );
                  });
                }
                return s;
              },
            },
            {
              key: "current",
              value: function (t) {
                var e = i()(pt.isElement(t.sc) ? t.sc : t.sc.parentNode),
                  n = this.fromNode(e);
                try {
                  n = i.a.extend(n, {
                    "font-bold": document.queryCommandState("bold")
                      ? "bold"
                      : "normal",
                    "font-italic": document.queryCommandState("italic")
                      ? "italic"
                      : "normal",
                    "font-underline": document.queryCommandState("underline")
                      ? "underline"
                      : "normal",
                    "font-subscript": document.queryCommandState("subscript")
                      ? "subscript"
                      : "normal",
                    "font-superscript": document.queryCommandState(
                      "superscript"
                    )
                      ? "superscript"
                      : "normal",
                    "font-strikethrough": document.queryCommandState(
                      "strikethrough"
                    )
                      ? "strikethrough"
                      : "normal",
                    "font-family":
                      document.queryCommandValue("fontname") ||
                      n["font-family"],
                  });
                } catch (t) {}
                if (t.isOnList()) {
                  var o =
                    ["circle", "disc", "disc-leading-zero", "square"].indexOf(
                      n["list-style-type"]
                    ) > -1;
                  n["list-style"] = o ? "unordered" : "ordered";
                } else n["list-style"] = "none";
                var r = pt.ancestor(t.sc, pt.isPara);
                if (r && r.style["line-height"])
                  n["line-height"] = r.style.lineHeight;
                else {
                  var a =
                    parseInt(n["line-height"], 10) /
                    parseInt(n["font-size"], 10);
                  n["line-height"] = a.toFixed(1);
                }
                return (
                  (n.anchor = t.isOnAnchor() && pt.ancestor(t.sc, pt.isAnchor)),
                  (n.ancestors = pt.listAncestor(t.sc, pt.isEditable)),
                  (n.range = t),
                  n
                );
              },
            },
          ]) && Et(e.prototype, n),
          o && Et(e, o),
          t
        );
      })();
      function $t(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var Nt = (function () {
        function t() {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "insertOrderedList",
              value: function (t) {
                this.toggleList("OL", t);
              },
            },
            {
              key: "insertUnorderedList",
              value: function (t) {
                this.toggleList("UL", t);
              },
            },
            {
              key: "indent",
              value: function (t) {
                var e = this,
                  n = wt.create(t).wrapBodyInlineWithPara(),
                  o = n.nodes(pt.isPara, { includeAncestor: !0 }),
                  r = C.clusterBy(o, g.peq2("parentNode"));
                i.a.each(r, function (t, n) {
                  var o = C.head(n);
                  if (pt.isLi(o)) {
                    var r = e.findList(o.previousSibling);
                    r
                      ? n.map(function (t) {
                          return r.appendChild(t);
                        })
                      : (e.wrapList(n, o.parentNode.nodeName),
                        n
                          .map(function (t) {
                            return t.parentNode;
                          })
                          .map(function (t) {
                            return e.appendToPrevious(t);
                          }));
                  } else
                    i.a.each(n, function (t, e) {
                      i()(e).css("marginLeft", function (t, e) {
                        return (parseInt(e, 10) || 0) + 25;
                      });
                    });
                }),
                  n.select();
              },
            },
            {
              key: "outdent",
              value: function (t) {
                var e = this,
                  n = wt.create(t).wrapBodyInlineWithPara(),
                  o = n.nodes(pt.isPara, { includeAncestor: !0 }),
                  r = C.clusterBy(o, g.peq2("parentNode"));
                i.a.each(r, function (t, n) {
                  var o = C.head(n);
                  pt.isLi(o)
                    ? e.releaseList([n])
                    : i.a.each(n, function (t, e) {
                        i()(e).css("marginLeft", function (t, e) {
                          return (e = parseInt(e, 10) || 0) > 25 ? e - 25 : "";
                        });
                      });
                }),
                  n.select();
              },
            },
            {
              key: "toggleList",
              value: function (t, e) {
                var n = this,
                  o = wt.create(e).wrapBodyInlineWithPara(),
                  r = o.nodes(pt.isPara, { includeAncestor: !0 }),
                  a = o.paraBookmark(r),
                  s = C.clusterBy(r, g.peq2("parentNode"));
                if (C.find(r, pt.isPurePara)) {
                  var l = [];
                  i.a.each(s, function (e, o) {
                    l = l.concat(n.wrapList(o, t));
                  }),
                    (r = l);
                } else {
                  var c = o
                    .nodes(pt.isList, { includeAncestor: !0 })
                    .filter(function (e) {
                      return !i.a.nodeName(e, t);
                    });
                  c.length
                    ? i.a.each(c, function (e, n) {
                        pt.replace(n, t);
                      })
                    : (r = this.releaseList(s, !0));
                }
                wt.createFromParaBookmark(a, r).select();
              },
            },
            {
              key: "wrapList",
              value: function (t, e) {
                var n = C.head(t),
                  o = C.last(t),
                  i = pt.isList(n.previousSibling) && n.previousSibling,
                  r = pt.isList(o.nextSibling) && o.nextSibling,
                  a = i || pt.insertAfter(pt.create(e || "UL"), o);
                return (
                  (t = t.map(function (t) {
                    return pt.isPurePara(t) ? pt.replace(t, "LI") : t;
                  })),
                  pt.appendChildNodes(a, t),
                  r &&
                    (pt.appendChildNodes(a, C.from(r.childNodes)),
                    pt.remove(r)),
                  t
                );
              },
            },
            {
              key: "releaseList",
              value: function (t, e) {
                var n = this,
                  o = [];
                return (
                  i.a.each(t, function (t, r) {
                    var a = C.head(r),
                      s = C.last(r),
                      l = e ? pt.lastAncestor(a, pt.isList) : a.parentNode,
                      c = l.parentNode;
                    if ("LI" === l.parentNode.nodeName)
                      r.map(function (t) {
                        var e = n.findNextSiblings(t);
                        c.nextSibling
                          ? c.parentNode.insertBefore(t, c.nextSibling)
                          : c.parentNode.appendChild(t),
                          e.length &&
                            (n.wrapList(e, l.nodeName),
                            t.appendChild(e[0].parentNode));
                      }),
                        0 === l.children.length && c.removeChild(l),
                        0 === c.childNodes.length &&
                          c.parentNode.removeChild(c);
                    else {
                      var u =
                          l.childNodes.length > 1
                            ? pt.splitTree(
                                l,
                                {
                                  node: s.parentNode,
                                  offset: pt.position(s) + 1,
                                },
                                { isSkipPaddingBlankHTML: !0 }
                              )
                            : null,
                        d = pt.splitTree(
                          l,
                          { node: a.parentNode, offset: pt.position(a) },
                          { isSkipPaddingBlankHTML: !0 }
                        );
                      (r = e
                        ? pt.listDescendant(d, pt.isLi)
                        : C.from(d.childNodes).filter(pt.isLi)),
                        (!e && pt.isList(l.parentNode)) ||
                          (r = r.map(function (t) {
                            return pt.replace(t, "P");
                          })),
                        i.a.each(C.from(r).reverse(), function (t, e) {
                          pt.insertAfter(e, l);
                        });
                      var h = C.compact([l, d, u]);
                      i.a.each(h, function (t, e) {
                        var n = [e].concat(pt.listDescendant(e, pt.isList));
                        i.a.each(n.reverse(), function (t, e) {
                          pt.nodeLength(e) || pt.remove(e, !0);
                        });
                      });
                    }
                    o = o.concat(r);
                  }),
                  o
                );
              },
            },
            {
              key: "appendToPrevious",
              value: function (t) {
                return t.previousSibling
                  ? pt.appendChildNodes(t.previousSibling, [t])
                  : this.wrapList([t], "LI");
              },
            },
            {
              key: "findList",
              value: function (t) {
                return t
                  ? C.find(t.children, function (t) {
                      return ["OL", "UL"].indexOf(t.nodeName) > -1;
                    })
                  : null;
              },
            },
            {
              key: "findNextSiblings",
              value: function (t) {
                for (var e = []; t.nextSibling; )
                  e.push(t.nextSibling), (t = t.nextSibling);
                return e;
              },
            },
          ]) && $t(e.prototype, n),
          o && $t(e, o),
          t
        );
      })();
      function Pt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var Rt = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.bullet = new Nt()),
            (this.options = e.options);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "insertTab",
              value: function (t, e) {
                var n = pt.createText(new Array(e + 1).join(pt.NBSP_CHAR));
                (t = t.deleteContents()).insertNode(n, !0),
                  (t = wt.create(n, e)).select();
              },
            },
            {
              key: "insertParagraph",
              value: function (t, e) {
                e = (e = (e =
                  e || wt.create(t)).deleteContents()).wrapBodyInlineWithPara();
                var n,
                  o = pt.ancestor(e.sc, pt.isPara);
                if (o) {
                  if (
                    pt.isLi(o) &&
                    (pt.isEmpty(o) || pt.deepestChildIsEmpty(o))
                  )
                    return void this.bullet.toggleList(o.parentNode.nodeName);
                  var r = null;
                  if (
                    (1 === this.options.blockquoteBreakingLevel
                      ? (r = pt.ancestor(o, pt.isBlockquote))
                      : 2 === this.options.blockquoteBreakingLevel &&
                        (r = pt.lastAncestor(o, pt.isBlockquote)),
                    r)
                  ) {
                    (n = i()(pt.emptyPara)[0]),
                      pt.isRightEdgePoint(e.getStartPoint()) &&
                        pt.isBR(e.sc.nextSibling) &&
                        i()(e.sc.nextSibling).remove();
                    var a = pt.splitTree(r, e.getStartPoint(), {
                      isDiscardEmptySplits: !0,
                    });
                    a ? a.parentNode.insertBefore(n, a) : pt.insertAfter(n, r);
                  } else {
                    n = pt.splitTree(o, e.getStartPoint());
                    var s = pt.listDescendant(o, pt.isEmptyAnchor);
                    (s = s.concat(pt.listDescendant(n, pt.isEmptyAnchor))),
                      i.a.each(s, function (t, e) {
                        pt.remove(e);
                      }),
                      (pt.isHeading(n) ||
                        pt.isPre(n) ||
                        pt.isCustomStyleTag(n)) &&
                        pt.isEmpty(n) &&
                        (n = pt.replace(n, "p"));
                  }
                } else {
                  var l = e.sc.childNodes[e.so];
                  (n = i()(pt.emptyPara)[0]),
                    l ? e.sc.insertBefore(n, l) : e.sc.appendChild(n);
                }
                wt.create(n, 0).normalize().select().scrollIntoView(t);
              },
            },
          ]) && Pt(e.prototype, n),
          o && Pt(e, o),
          t
        );
      })();
      function Lt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var At = function t(e, n, o, i) {
        var r = { colPos: 0, rowPos: 0 },
          a = [],
          s = [];
        function l(t, e, n, o, i, r, s) {
          var l = {
            baseRow: n,
            baseCell: o,
            isRowSpan: i,
            isColSpan: r,
            isVirtual: s,
          };
          a[t] || (a[t] = []), (a[t][e] = l);
        }
        function c(t, e, n, o) {
          return {
            baseCell: t.baseCell,
            action: e,
            virtualTable: { rowIndex: n, cellIndex: o },
          };
        }
        function u(t, e) {
          if (!a[t]) return e;
          if (!a[t][e]) return e;
          for (var n = e; a[t][n]; ) if ((n++, !a[t][n])) return n;
        }
        function d(t, e) {
          var n = u(t.rowIndex, e.cellIndex),
            o = e.colSpan > 1,
            i = e.rowSpan > 1,
            a = t.rowIndex === r.rowPos && e.cellIndex === r.colPos;
          l(t.rowIndex, n, t, e, i, o, !1);
          var s = e.attributes.rowSpan
            ? parseInt(e.attributes.rowSpan.value, 10)
            : 0;
          if (s > 1)
            for (var c = 1; c < s; c++) {
              var d = t.rowIndex + c;
              h(d, n, e, a), l(d, n, t, e, !0, o, !0);
            }
          var f = e.attributes.colSpan
            ? parseInt(e.attributes.colSpan.value, 10)
            : 0;
          if (f > 1)
            for (var p = 1; p < f; p++) {
              var m = u(t.rowIndex, n + p);
              h(t.rowIndex, m, e, a), l(t.rowIndex, m, t, e, i, !0, !0);
            }
        }
        function h(t, e, n, o) {
          t === r.rowPos &&
            r.colPos >= n.cellIndex &&
            n.cellIndex <= e &&
            !o &&
            r.colPos++;
        }
        function f(e) {
          switch (n) {
            case t.where.Column:
              if (e.isColSpan) return t.resultAction.SubtractSpanCount;
              break;
            case t.where.Row:
              if (!e.isVirtual && e.isRowSpan) return t.resultAction.AddCell;
              if (e.isRowSpan) return t.resultAction.SubtractSpanCount;
          }
          return t.resultAction.RemoveCell;
        }
        function p(e) {
          switch (n) {
            case t.where.Column:
              if (e.isColSpan) return t.resultAction.SumSpanCount;
              if (e.isRowSpan && e.isVirtual) return t.resultAction.Ignore;
              break;
            case t.where.Row:
              if (e.isRowSpan) return t.resultAction.SumSpanCount;
              if (e.isColSpan && e.isVirtual) return t.resultAction.Ignore;
          }
          return t.resultAction.AddCell;
        }
        (this.getActionList = function () {
          for (
            var e = n === t.where.Row ? r.rowPos : -1,
              i = n === t.where.Column ? r.colPos : -1,
              l = 0,
              u = !0;
            u;

          ) {
            var d = e >= 0 ? e : l,
              h = i >= 0 ? i : l,
              m = a[d];
            if (!m) return (u = !1), s;
            var v = m[h];
            if (!v) return (u = !1), s;
            var g = t.resultAction.Ignore;
            switch (o) {
              case t.requestAction.Add:
                g = p(v);
                break;
              case t.requestAction.Delete:
                g = f(v);
            }
            s.push(c(v, g, d, h)), l++;
          }
          return s;
        }),
          e &&
            e.tagName &&
            ("td" === e.tagName.toLowerCase() ||
              "th" === e.tagName.toLowerCase()) &&
            ((r.colPos = e.cellIndex),
            e.parentElement &&
              e.parentElement.tagName &&
              "tr" === e.parentElement.tagName.toLowerCase() &&
              (r.rowPos = e.parentElement.rowIndex)),
          (function () {
            for (var t = i.rows, e = 0; e < t.length; e++)
              for (var n = t[e].cells, o = 0; o < n.length; o++) d(t[e], n[o]);
          })();
      };
      (At.where = { Row: 0, Column: 1 }),
        (At.requestAction = { Add: 0, Delete: 1 }),
        (At.resultAction = {
          Ignore: 0,
          SubtractSpanCount: 1,
          RemoveCell: 2,
          AddCell: 3,
          SumSpanCount: 4,
        });
      var Ft = (function () {
        function t() {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "tab",
              value: function (t, e) {
                var n = pt.ancestor(t.commonAncestor(), pt.isCell),
                  o = pt.ancestor(n, pt.isTable),
                  i = pt.listDescendant(o, pt.isCell),
                  r = C[e ? "prev" : "next"](i, n);
                r && wt.create(r, 0).select();
              },
            },
            {
              key: "addRow",
              value: function (t, e) {
                for (
                  var n = pt.ancestor(t.commonAncestor(), pt.isCell),
                    o = i()(n).closest("tr"),
                    r = this.recoverAttributes(o),
                    a = i()("<tr" + r + "></tr>"),
                    s = new At(
                      n,
                      At.where.Row,
                      At.requestAction.Add,
                      i()(o).closest("table")[0]
                    ).getActionList(),
                    l = 0;
                  l < s.length;
                  l++
                ) {
                  var c = s[l],
                    u = this.recoverAttributes(c.baseCell);
                  switch (c.action) {
                    case At.resultAction.AddCell:
                      a.append("<td" + u + ">" + pt.blank + "</td>");
                      break;
                    case At.resultAction.SumSpanCount:
                      if (
                        "top" === e &&
                        (c.baseCell.parent
                          ? c.baseCell.closest("tr").rowIndex
                          : 0) <= o[0].rowIndex
                      ) {
                        var d = i()("<div></div>")
                          .append(
                            i()(
                              "<td" + u + ">" + pt.blank + "</td>"
                            ).removeAttr("rowspan")
                          )
                          .html();
                        a.append(d);
                        break;
                      }
                      var h = parseInt(c.baseCell.rowSpan, 10);
                      h++, c.baseCell.setAttribute("rowSpan", h);
                  }
                }
                if ("top" === e) o.before(a);
                else {
                  if (n.rowSpan > 1) {
                    var f = o[0].rowIndex + (n.rowSpan - 2);
                    return void i()(i()(o).parent().find("tr")[f]).after(
                      i()(a)
                    );
                  }
                  o.after(a);
                }
              },
            },
            {
              key: "addCol",
              value: function (t, e) {
                var n = pt.ancestor(t.commonAncestor(), pt.isCell),
                  o = i()(n).closest("tr");
                i()(o).siblings().push(o);
                for (
                  var r = new At(
                      n,
                      At.where.Column,
                      At.requestAction.Add,
                      i()(o).closest("table")[0]
                    ).getActionList(),
                    a = 0;
                  a < r.length;
                  a++
                ) {
                  var s = r[a],
                    l = this.recoverAttributes(s.baseCell);
                  switch (s.action) {
                    case At.resultAction.AddCell:
                      "right" === e
                        ? i()(s.baseCell).after(
                            "<td" + l + ">" + pt.blank + "</td>"
                          )
                        : i()(s.baseCell).before(
                            "<td" + l + ">" + pt.blank + "</td>"
                          );
                      break;
                    case At.resultAction.SumSpanCount:
                      if ("right" === e) {
                        var c = parseInt(s.baseCell.colSpan, 10);
                        c++, s.baseCell.setAttribute("colSpan", c);
                      } else
                        i()(s.baseCell).before(
                          "<td" + l + ">" + pt.blank + "</td>"
                        );
                  }
                }
              },
            },
            {
              key: "recoverAttributes",
              value: function (t) {
                var e = "";
                if (!t) return e;
                for (var n = t.attributes || [], o = 0; o < n.length; o++)
                  "id" !== n[o].name.toLowerCase() &&
                    n[o].specified &&
                    (e += " " + n[o].name + "='" + n[o].value + "'");
                return e;
              },
            },
            {
              key: "deleteRow",
              value: function (t) {
                for (
                  var e = pt.ancestor(t.commonAncestor(), pt.isCell),
                    n = i()(e).closest("tr"),
                    o = n.children("td, th").index(i()(e)),
                    r = n[0].rowIndex,
                    a = new At(
                      e,
                      At.where.Row,
                      At.requestAction.Delete,
                      i()(n).closest("table")[0]
                    ).getActionList(),
                    s = 0;
                  s < a.length;
                  s++
                )
                  if (a[s]) {
                    var l = a[s].baseCell,
                      c = a[s].virtualTable,
                      u = l.rowSpan && l.rowSpan > 1,
                      d = u ? parseInt(l.rowSpan, 10) : 0;
                    switch (a[s].action) {
                      case At.resultAction.Ignore:
                        continue;
                      case At.resultAction.AddCell:
                        var h = n.next("tr")[0];
                        if (!h) continue;
                        var f = n[0].cells[o];
                        u &&
                          (d > 2
                            ? (d--,
                              h.insertBefore(f, h.cells[o]),
                              h.cells[o].setAttribute("rowSpan", d),
                              (h.cells[o].innerHTML = ""))
                            : 2 === d &&
                              (h.insertBefore(f, h.cells[o]),
                              h.cells[o].removeAttribute("rowSpan"),
                              (h.cells[o].innerHTML = "")));
                        continue;
                      case At.resultAction.SubtractSpanCount:
                        u &&
                          (d > 2
                            ? (d--,
                              l.setAttribute("rowSpan", d),
                              c.rowIndex !== r &&
                                l.cellIndex === o &&
                                (l.innerHTML = ""))
                            : 2 === d &&
                              (l.removeAttribute("rowSpan"),
                              c.rowIndex !== r &&
                                l.cellIndex === o &&
                                (l.innerHTML = "")));
                        continue;
                      case At.resultAction.RemoveCell:
                        continue;
                    }
                  }
                n.remove();
              },
            },
            {
              key: "deleteCol",
              value: function (t) {
                for (
                  var e = pt.ancestor(t.commonAncestor(), pt.isCell),
                    n = i()(e).closest("tr"),
                    o = n.children("td, th").index(i()(e)),
                    r = new At(
                      e,
                      At.where.Column,
                      At.requestAction.Delete,
                      i()(n).closest("table")[0]
                    ).getActionList(),
                    a = 0;
                  a < r.length;
                  a++
                )
                  if (r[a])
                    switch (r[a].action) {
                      case At.resultAction.Ignore:
                        continue;
                      case At.resultAction.SubtractSpanCount:
                        var s = r[a].baseCell;
                        if (s.colSpan && s.colSpan > 1) {
                          var l = s.colSpan ? parseInt(s.colSpan, 10) : 0;
                          l > 2
                            ? (l--,
                              s.setAttribute("colSpan", l),
                              s.cellIndex === o && (s.innerHTML = ""))
                            : 2 === l &&
                              (s.removeAttribute("colSpan"),
                              s.cellIndex === o && (s.innerHTML = ""));
                        }
                        continue;
                      case At.resultAction.RemoveCell:
                        pt.remove(r[a].baseCell, !0);
                        continue;
                    }
              },
            },
            {
              key: "createTable",
              value: function (t, e, n) {
                for (var o, r = [], a = 0; a < t; a++)
                  r.push("<td>" + pt.blank + "</td>");
                o = r.join("");
                for (var s, l = [], c = 0; c < e; c++)
                  l.push("<tr>" + o + "</tr>");
                s = l.join("");
                var u = i()("<table>" + s + "</table>");
                return (
                  n && n.tableClassName && u.addClass(n.tableClassName), u[0]
                );
              },
            },
            {
              key: "deleteTable",
              value: function (t) {
                var e = pt.ancestor(t.commonAncestor(), pt.isCell);
                i()(e).closest("table").remove();
              },
            },
          ]) && Lt(e.prototype, n),
          o && Lt(e, o),
          t
        );
      })();
      function Dt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var Ht = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$note = e.layoutInfo.note),
            (this.$editor = e.layoutInfo.editor),
            (this.$editable = e.layoutInfo.editable),
            (this.options = e.options),
            (this.lang = this.options.langInfo),
            (this.editable = this.$editable[0]),
            (this.lastRange = null),
            (this.snapshot = null),
            (this.style = new It()),
            (this.table = new Ft()),
            (this.typing = new Rt(e)),
            (this.bullet = new Nt()),
            (this.history = new Tt(e)),
            this.context.memo("help.escape", this.lang.help.escape),
            this.context.memo("help.undo", this.lang.help.undo),
            this.context.memo("help.redo", this.lang.help.redo),
            this.context.memo("help.tab", this.lang.help.tab),
            this.context.memo("help.untab", this.lang.help.untab),
            this.context.memo(
              "help.insertParagraph",
              this.lang.help.insertParagraph
            ),
            this.context.memo(
              "help.insertOrderedList",
              this.lang.help.insertOrderedList
            ),
            this.context.memo(
              "help.insertUnorderedList",
              this.lang.help.insertUnorderedList
            ),
            this.context.memo("help.indent", this.lang.help.indent),
            this.context.memo("help.outdent", this.lang.help.outdent),
            this.context.memo("help.formatPara", this.lang.help.formatPara),
            this.context.memo(
              "help.insertHorizontalRule",
              this.lang.help.insertHorizontalRule
            ),
            this.context.memo("help.fontName", this.lang.help.fontName);
          for (
            var o = [
                "bold",
                "italic",
                "underline",
                "strikethrough",
                "superscript",
                "subscript",
                "justifyLeft",
                "justifyCenter",
                "justifyRight",
                "justifyFull",
                "formatBlock",
                "removeFormat",
                "backColor",
              ],
              r = 0,
              a = o.length;
            r < a;
            r++
          )
            (this[o[r]] = (function (t) {
              return function (e) {
                n.beforeCommand(),
                  document.execCommand(t, !1, e),
                  n.afterCommand(!0);
              };
            })(o[r])),
              this.context.memo("help." + o[r], this.lang.help[o[r]]);
          (this.fontName = this.wrapCommand(function (t) {
            return n.fontStyling("font-family", m.validFontName(t));
          })),
            (this.fontSize = this.wrapCommand(function (t) {
              var e = n.currentStyle()["font-size-unit"];
              return n.fontStyling("font-size", t + e);
            })),
            (this.fontSizeUnit = this.wrapCommand(function (t) {
              var e = n.currentStyle()["font-size"];
              return n.fontStyling("font-size", e + t);
            }));
          for (var s = 1; s <= 6; s++)
            (this["formatH" + s] = (function (t) {
              return function () {
                n.formatBlock("H" + t);
              };
            })(s)),
              this.context.memo(
                "help.formatH" + s,
                this.lang.help["formatH" + s]
              );
          (this.insertParagraph = this.wrapCommand(function () {
            n.typing.insertParagraph(n.editable);
          })),
            (this.insertOrderedList = this.wrapCommand(function () {
              n.bullet.insertOrderedList(n.editable);
            })),
            (this.insertUnorderedList = this.wrapCommand(function () {
              n.bullet.insertUnorderedList(n.editable);
            })),
            (this.indent = this.wrapCommand(function () {
              n.bullet.indent(n.editable);
            })),
            (this.outdent = this.wrapCommand(function () {
              n.bullet.outdent(n.editable);
            })),
            (this.insertNode = this.wrapCommand(function (t) {
              n.isLimited(i()(t).text().length) ||
                (n.getLastRange().insertNode(t),
                n.setLastRange(wt.createFromNodeAfter(t).select()));
            })),
            (this.insertText = this.wrapCommand(function (t) {
              if (!n.isLimited(t.length)) {
                var e = n.getLastRange().insertNode(pt.createText(t));
                n.setLastRange(wt.create(e, pt.nodeLength(e)).select());
              }
            })),
            (this.pasteHTML = this.wrapCommand(function (t) {
              if (!n.isLimited(t.length)) {
                t = n.context.invoke("codeview.purify", t);
                var e = n.getLastRange().pasteHTML(t);
                n.setLastRange(wt.createFromNodeAfter(C.last(e)).select());
              }
            })),
            (this.formatBlock = this.wrapCommand(function (t, e) {
              var o = n.options.callbacks.onApplyCustomStyle;
              o
                ? o.call(n, e, n.context, n.onFormatBlock)
                : n.onFormatBlock(t, e);
            })),
            (this.insertHorizontalRule = this.wrapCommand(function () {
              var t = n.getLastRange().insertNode(pt.create("HR"));
              t.nextSibling &&
                n.setLastRange(
                  wt.create(t.nextSibling, 0).normalize().select()
                );
            })),
            (this.lineHeight = this.wrapCommand(function (t) {
              n.style.stylePara(n.getLastRange(), { lineHeight: t });
            })),
            (this.createLink = this.wrapCommand(function (t) {
              var e = t.url,
                o = t.text,
                r = t.isNewWindow,
                a = t.checkProtocol,
                s = t.range || n.getLastRange(),
                l = o.length - s.toString().length;
              if (!(l > 0 && n.isLimited(l))) {
                var c = s.toString() !== o;
                "string" == typeof e && (e = e.trim()),
                  n.options.onCreateLink
                    ? (e = n.options.onCreateLink(e))
                    : a &&
                      (e = /^([A-Za-z][A-Za-z0-9+-.]*\:|#|\/)/.test(e)
                        ? e
                        : n.options.defaultProtocol + e);
                var u = [];
                if (c) {
                  var d = (s = s.deleteContents()).insertNode(
                    i()("<A>" + o + "</A>")[0]
                  );
                  u.push(d);
                } else
                  u = n.style.styleNodes(s, {
                    nodeName: "A",
                    expandClosestSibling: !0,
                    onlyPartialContains: !0,
                  });
                i.a.each(u, function (t, n) {
                  i()(n).attr("href", e),
                    r
                      ? i()(n).attr("target", "_blank")
                      : i()(n).removeAttr("target");
                }),
                  n.setLastRange(n.createRangeFromList(u).select());
              }
            })),
            (this.color = this.wrapCommand(function (t) {
              var e = t.foreColor,
                n = t.backColor;
              e && document.execCommand("foreColor", !1, e),
                n && document.execCommand("backColor", !1, n);
            })),
            (this.foreColor = this.wrapCommand(function (t) {
              document.execCommand("foreColor", !1, t);
            })),
            (this.insertTable = this.wrapCommand(function (t) {
              var e = t.split("x");
              n.getLastRange()
                .deleteContents()
                .insertNode(n.table.createTable(e[0], e[1], n.options));
            })),
            (this.removeMedia = this.wrapCommand(function () {
              var t = i()(n.restoreTarget()).parent();
              t.closest("figure").length
                ? t.closest("figure").remove()
                : (t = i()(n.restoreTarget()).detach()),
                n.context.triggerEvent("media.delete", t, n.$editable);
            })),
            (this.floatMe = this.wrapCommand(function (t) {
              var e = i()(n.restoreTarget());
              e.toggleClass("note-float-left", "left" === t),
                e.toggleClass("note-float-right", "right" === t),
                e.css("float", "none" === t ? "" : t);
            })),
            (this.resize = this.wrapCommand(function (t) {
              var e = i()(n.restoreTarget());
              0 === (t = parseFloat(t))
                ? e.css("width", "")
                : e.css({ width: 100 * t + "%", height: "" });
            }));
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                var t = this;
                this.$editable
                  .on("keydown", function (e) {
                    if (
                      (e.keyCode === xt.code.ENTER &&
                        t.context.triggerEvent("enter", e),
                      t.context.triggerEvent("keydown", e),
                      (t.snapshot = t.history.makeSnapshot()),
                      (t.hasKeyShortCut = !1),
                      e.isDefaultPrevented() ||
                        (t.options.shortcuts
                          ? (t.hasKeyShortCut = t.handleKeyMap(e))
                          : t.preventDefaultEditableShortCuts(e)),
                      t.isLimited(1, e))
                    ) {
                      var n = t.getLastRange();
                      if (n.eo - n.so == 0) return !1;
                    }
                    t.setLastRange(),
                      t.options.recordEveryKeystroke &&
                        !1 === t.hasKeyShortCut &&
                        t.history.recordUndo();
                  })
                  .on("keyup", function (e) {
                    t.setLastRange(), t.context.triggerEvent("keyup", e);
                  })
                  .on("focus", function (e) {
                    t.setLastRange(), t.context.triggerEvent("focus", e);
                  })
                  .on("blur", function (e) {
                    t.context.triggerEvent("blur", e);
                  })
                  .on("mousedown", function (e) {
                    t.context.triggerEvent("mousedown", e);
                  })
                  .on("mouseup", function (e) {
                    t.setLastRange(),
                      t.history.recordUndo(),
                      t.context.triggerEvent("mouseup", e);
                  })
                  .on("scroll", function (e) {
                    t.context.triggerEvent("scroll", e);
                  })
                  .on("paste", function (e) {
                    t.setLastRange(), t.context.triggerEvent("paste", e);
                  })
                  .on("input", function () {
                    t.isLimited(0) &&
                      t.snapshot &&
                      t.history.applySnapshot(t.snapshot);
                  }),
                  this.$editable.attr("spellcheck", this.options.spellCheck),
                  this.$editable.attr("autocorrect", this.options.spellCheck),
                  this.options.disableGrammar &&
                    this.$editable.attr("data-gramm", !1),
                  this.$editable.html(pt.html(this.$note) || pt.emptyPara),
                  this.$editable.on(
                    m.inputEventName,
                    g.debounce(function () {
                      t.context.triggerEvent(
                        "change",
                        t.$editable.html(),
                        t.$editable
                      );
                    }, 10)
                  ),
                  this.$editable
                    .on("focusin", function (e) {
                      t.context.triggerEvent("focusin", e);
                    })
                    .on("focusout", function (e) {
                      t.context.triggerEvent("focusout", e);
                    }),
                  this.options.airMode
                    ? this.options.overrideContextMenu &&
                      this.$editor.on("contextmenu", function (e) {
                        return t.context.triggerEvent("contextmenu", e), !1;
                      })
                    : (this.options.width &&
                        this.$editor.outerWidth(this.options.width),
                      this.options.height &&
                        this.$editable.outerHeight(this.options.height),
                      this.options.maxHeight &&
                        this.$editable.css(
                          "max-height",
                          this.options.maxHeight
                        ),
                      this.options.minHeight &&
                        this.$editable.css(
                          "min-height",
                          this.options.minHeight
                        )),
                  this.history.recordUndo(),
                  this.setLastRange();
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$editable.off();
              },
            },
            {
              key: "handleKeyMap",
              value: function (t) {
                var e = this.options.keyMap[m.isMac ? "mac" : "pc"],
                  n = [];
                t.metaKey && n.push("CMD"),
                  t.ctrlKey && !t.altKey && n.push("CTRL"),
                  t.shiftKey && n.push("SHIFT");
                var o = xt.nameFromCode[t.keyCode];
                o && n.push(o);
                var i = e[n.join("+")];
                if ("TAB" !== o || this.options.tabDisable)
                  if (i) {
                    if (!1 !== this.context.invoke(i))
                      return t.preventDefault(), !0;
                  } else xt.isEdit(t.keyCode) && this.afterCommand();
                else this.afterCommand();
                return !1;
              },
            },
            {
              key: "preventDefaultEditableShortCuts",
              value: function (t) {
                (t.ctrlKey || t.metaKey) &&
                  C.contains([66, 73, 85], t.keyCode) &&
                  t.preventDefault();
              },
            },
            {
              key: "isLimited",
              value: function (t, e) {
                return (
                  (t = t || 0),
                  (void 0 === e ||
                    !(
                      xt.isMove(e.keyCode) ||
                      xt.isNavigation(e.keyCode) ||
                      e.ctrlKey ||
                      e.metaKey ||
                      C.contains([xt.code.BACKSPACE, xt.code.DELETE], e.keyCode)
                    )) &&
                    this.options.maxTextLength > 0 &&
                    this.$editable.text().length + t >
                      this.options.maxTextLength
                );
              },
            },
            {
              key: "createRange",
              value: function () {
                return this.focus(), this.setLastRange(), this.getLastRange();
              },
            },
            {
              key: "createRangeFromList",
              value: function (t) {
                var e = wt.createFromNodeBefore(C.head(t)).getStartPoint(),
                  n = wt.createFromNodeAfter(C.last(t)).getEndPoint();
                return wt.create(e.node, e.offset, n.node, n.offset);
              },
            },
            {
              key: "setLastRange",
              value: function (t) {
                t
                  ? (this.lastRange = t)
                  : ((this.lastRange = wt.create(this.editable)),
                    0 ===
                      i()(this.lastRange.sc).closest(".note-editable").length &&
                      (this.lastRange = wt.createFromBodyElement(
                        this.editable
                      )));
              },
            },
            {
              key: "getLastRange",
              value: function () {
                return this.lastRange || this.setLastRange(), this.lastRange;
              },
            },
            {
              key: "saveRange",
              value: function (t) {
                t && this.getLastRange().collapse().select();
              },
            },
            {
              key: "restoreRange",
              value: function () {
                this.lastRange && (this.lastRange.select(), this.focus());
              },
            },
            {
              key: "saveTarget",
              value: function (t) {
                this.$editable.data("target", t);
              },
            },
            {
              key: "clearTarget",
              value: function () {
                this.$editable.removeData("target");
              },
            },
            {
              key: "restoreTarget",
              value: function () {
                return this.$editable.data("target");
              },
            },
            {
              key: "currentStyle",
              value: function () {
                var t = wt.create();
                return (
                  t && (t = t.normalize()),
                  t
                    ? this.style.current(t)
                    : this.style.fromNode(this.$editable)
                );
              },
            },
            {
              key: "styleFromNode",
              value: function (t) {
                return this.style.fromNode(t);
              },
            },
            {
              key: "undo",
              value: function () {
                this.context.triggerEvent(
                  "before.command",
                  this.$editable.html()
                ),
                  this.history.undo(),
                  this.context.triggerEvent(
                    "change",
                    this.$editable.html(),
                    this.$editable
                  );
              },
            },
            {
              key: "commit",
              value: function () {
                this.context.triggerEvent(
                  "before.command",
                  this.$editable.html()
                ),
                  this.history.commit(),
                  this.context.triggerEvent(
                    "change",
                    this.$editable.html(),
                    this.$editable
                  );
              },
            },
            {
              key: "redo",
              value: function () {
                this.context.triggerEvent(
                  "before.command",
                  this.$editable.html()
                ),
                  this.history.redo(),
                  this.context.triggerEvent(
                    "change",
                    this.$editable.html(),
                    this.$editable
                  );
              },
            },
            {
              key: "beforeCommand",
              value: function () {
                this.context.triggerEvent(
                  "before.command",
                  this.$editable.html()
                ),
                  document.execCommand(
                    "styleWithCSS",
                    !1,
                    this.options.styleWithCSS
                  ),
                  this.focus();
              },
            },
            {
              key: "afterCommand",
              value: function (t) {
                this.normalizeContent(),
                  this.history.recordUndo(),
                  t ||
                    this.context.triggerEvent(
                      "change",
                      this.$editable.html(),
                      this.$editable
                    );
              },
            },
            {
              key: "tab",
              value: function () {
                var t = this.getLastRange();
                if (t.isCollapsed() && t.isOnCell()) this.table.tab(t);
                else {
                  if (0 === this.options.tabSize) return !1;
                  this.isLimited(this.options.tabSize) ||
                    (this.beforeCommand(),
                    this.typing.insertTab(t, this.options.tabSize),
                    this.afterCommand());
                }
              },
            },
            {
              key: "untab",
              value: function () {
                var t = this.getLastRange();
                if (t.isCollapsed() && t.isOnCell()) this.table.tab(t, !0);
                else if (0 === this.options.tabSize) return !1;
              },
            },
            {
              key: "wrapCommand",
              value: function (t) {
                return function () {
                  this.beforeCommand(),
                    t.apply(this, arguments),
                    this.afterCommand();
                };
              },
            },
            {
              key: "insertImage",
              value: function (t, e) {
                var n,
                  o = this;
                return ((n = t),
                i.a
                  .Deferred(function (t) {
                    var e = i()("<img>");
                    e.one("load", function () {
                      e.off("error abort"), t.resolve(e);
                    })
                      .one("error abort", function () {
                        e.off("load").detach(), t.reject(e);
                      })
                      .css({ display: "none" })
                      .appendTo(document.body)
                      .attr("src", n);
                  })
                  .promise())
                  .then(function (t) {
                    o.beforeCommand(),
                      "function" == typeof e
                        ? e(t)
                        : ("string" == typeof e && t.attr("data-filename", e),
                          t.css(
                            "width",
                            Math.min(o.$editable.width(), t.width())
                          )),
                      t.show(),
                      o.getLastRange().insertNode(t[0]),
                      o.setLastRange(wt.createFromNodeAfter(t[0]).select()),
                      o.afterCommand();
                  })
                  .fail(function (t) {
                    o.context.triggerEvent("image.upload.error", t);
                  });
              },
            },
            {
              key: "insertImagesAsDataURL",
              value: function (t) {
                var e = this;
                i.a.each(t, function (t, n) {
                  var o = n.name;
                  e.options.maximumImageFileSize &&
                  e.options.maximumImageFileSize < n.size
                    ? e.context.triggerEvent(
                        "image.upload.error",
                        e.lang.image.maximumFileSizeError
                      )
                    : (function (t) {
                        return i.a
                          .Deferred(function (e) {
                            i.a
                              .extend(new FileReader(), {
                                onload: function (t) {
                                  var n = t.target.result;
                                  e.resolve(n);
                                },
                                onerror: function (t) {
                                  e.reject(t);
                                },
                              })
                              .readAsDataURL(t);
                          })
                          .promise();
                      })(n)
                        .then(function (t) {
                          return e.insertImage(t, o);
                        })
                        .fail(function () {
                          e.context.triggerEvent("image.upload.error");
                        });
                });
              },
            },
            {
              key: "insertImagesOrCallback",
              value: function (t) {
                this.options.callbacks.onImageUpload
                  ? this.context.triggerEvent("image.upload", t)
                  : this.insertImagesAsDataURL(t);
              },
            },
            {
              key: "getSelectedText",
              value: function () {
                var t = this.getLastRange();
                return (
                  t.isOnAnchor() &&
                    (t = wt.createFromNode(pt.ancestor(t.sc, pt.isAnchor))),
                  t.toString()
                );
              },
            },
            {
              key: "onFormatBlock",
              value: function (t, e) {
                if (
                  (document.execCommand(
                    "FormatBlock",
                    !1,
                    m.isMSIE ? "<" + t + ">" : t
                  ),
                  e &&
                    e.length &&
                    (e[0].tagName.toUpperCase() !== t.toUpperCase() &&
                      (e = e.find(t)),
                    e && e.length))
                ) {
                  var n = e[0].className || "";
                  if (n) {
                    var o = this.createRange();
                    i()([o.sc, o.ec]).closest(t).addClass(n);
                  }
                }
              },
            },
            {
              key: "formatPara",
              value: function () {
                this.formatBlock("P");
              },
            },
            {
              key: "fontStyling",
              value: function (t, e) {
                var n = this.getLastRange();
                if ("" !== n) {
                  var o = this.style.styleNodes(n);
                  if (
                    (this.$editor.find(".note-status-output").html(""),
                    i()(o).css(t, e),
                    n.isCollapsed())
                  ) {
                    var r = C.head(o);
                    r &&
                      !pt.nodeLength(r) &&
                      ((r.innerHTML = pt.ZERO_WIDTH_NBSP_CHAR),
                      wt.createFromNode(r.firstChild).select(),
                      this.setLastRange(),
                      this.$editable.data("bogus", r));
                  } else
                    this.setLastRange(this.createRangeFromList(o).select());
                } else {
                  var a = i.a.now();
                  this.$editor
                    .find(".note-status-output")
                    .html(
                      '<div id="note-status-output-' +
                        a +
                        '" class="alert alert-info">' +
                        this.lang.output.noSelection +
                        "</div>"
                    ),
                    setTimeout(function () {
                      i()("#note-status-output-" + a).remove();
                    }, 5e3);
                }
              },
            },
            {
              key: "unlink",
              value: function () {
                var t = this.getLastRange();
                if (t.isOnAnchor()) {
                  var e = pt.ancestor(t.sc, pt.isAnchor);
                  (t = wt.createFromNode(e)).select(),
                    this.setLastRange(),
                    this.beforeCommand(),
                    document.execCommand("unlink"),
                    this.afterCommand();
                }
              },
            },
            {
              key: "getLinkInfo",
              value: function () {
                var t = this.getLastRange().expand(pt.isAnchor),
                  e = i()(C.head(t.nodes(pt.isAnchor))),
                  n = {
                    range: t,
                    text: t.toString(),
                    url: e.length ? e.attr("href") : "",
                  };
                return (
                  e.length && (n.isNewWindow = "_blank" === e.attr("target")), n
                );
              },
            },
            {
              key: "addRow",
              value: function (t) {
                var e = this.getLastRange(this.$editable);
                e.isCollapsed() &&
                  e.isOnCell() &&
                  (this.beforeCommand(),
                  this.table.addRow(e, t),
                  this.afterCommand());
              },
            },
            {
              key: "addCol",
              value: function (t) {
                var e = this.getLastRange(this.$editable);
                e.isCollapsed() &&
                  e.isOnCell() &&
                  (this.beforeCommand(),
                  this.table.addCol(e, t),
                  this.afterCommand());
              },
            },
            {
              key: "deleteRow",
              value: function () {
                var t = this.getLastRange(this.$editable);
                t.isCollapsed() &&
                  t.isOnCell() &&
                  (this.beforeCommand(),
                  this.table.deleteRow(t),
                  this.afterCommand());
              },
            },
            {
              key: "deleteCol",
              value: function () {
                var t = this.getLastRange(this.$editable);
                t.isCollapsed() &&
                  t.isOnCell() &&
                  (this.beforeCommand(),
                  this.table.deleteCol(t),
                  this.afterCommand());
              },
            },
            {
              key: "deleteTable",
              value: function () {
                var t = this.getLastRange(this.$editable);
                t.isCollapsed() &&
                  t.isOnCell() &&
                  (this.beforeCommand(),
                  this.table.deleteTable(t),
                  this.afterCommand());
              },
            },
            {
              key: "resizeTo",
              value: function (t, e, n) {
                var o;
                if (n) {
                  var i = t.y / t.x,
                    r = e.data("ratio");
                  o = {
                    width: r > i ? t.x : t.y / r,
                    height: r > i ? t.x * r : t.y,
                  };
                } else o = { width: t.x, height: t.y };
                e.css(o);
              },
            },
            {
              key: "hasFocus",
              value: function () {
                return this.$editable.is(":focus");
              },
            },
            {
              key: "focus",
              value: function () {
                this.hasFocus() || this.$editable.focus();
              },
            },
            {
              key: "isEmpty",
              value: function () {
                return (
                  pt.isEmpty(this.$editable[0]) ||
                  pt.emptyPara === this.$editable.html()
                );
              },
            },
            {
              key: "empty",
              value: function () {
                this.context.invoke("code", pt.emptyPara);
              },
            },
            {
              key: "normalizeContent",
              value: function () {
                this.$editable[0].normalize();
              },
            },
          ]) && Dt(e.prototype, n),
          o && Dt(e, o),
          t
        );
      })();
      function zt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var Bt = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$editable = e.layoutInfo.editable);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                this.$editable.on("paste", this.pasteByEvent.bind(this));
              },
            },
            {
              key: "pasteByEvent",
              value: function (t) {
                var e = this,
                  n = t.originalEvent.clipboardData;
                if (n && n.items && n.items.length) {
                  var o = n.items.length > 1 ? n.items[1] : C.head(n.items);
                  "file" === o.kind && -1 !== o.type.indexOf("image/")
                    ? (this.context.invoke("editor.insertImagesOrCallback", [
                        o.getAsFile(),
                      ]),
                      t.preventDefault())
                    : "string" === o.kind &&
                      this.context.invoke(
                        "editor.isLimited",
                        n.getData("Text").length
                      ) &&
                      t.preventDefault();
                } else if (window.clipboardData) {
                  var i = window.clipboardData.getData("text");
                  this.context.invoke("editor.isLimited", i.length) &&
                    t.preventDefault();
                }
                setTimeout(function () {
                  e.context.invoke("editor.afterCommand");
                }, 10);
              },
            },
          ]) && zt(e.prototype, n),
          o && zt(e, o),
          t
        );
      })();
      function Mt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var Ot = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$eventListener = i()(document)),
            (this.$editor = e.layoutInfo.editor),
            (this.$editable = e.layoutInfo.editable),
            (this.options = e.options),
            (this.lang = this.options.langInfo),
            (this.documentEventHandlers = {}),
            (this.$dropzone = i()(
              [
                '<div class="note-dropzone">',
                '<div class="note-dropzone-message"></div>',
                "</div>",
              ].join("")
            ).prependTo(this.$editor));
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                this.options.disableDragAndDrop
                  ? ((this.documentEventHandlers.onDrop = function (t) {
                      t.preventDefault();
                    }),
                    (this.$eventListener = this.$dropzone),
                    this.$eventListener.on(
                      "drop",
                      this.documentEventHandlers.onDrop
                    ))
                  : this.attachDragAndDropEvent();
              },
            },
            {
              key: "attachDragAndDropEvent",
              value: function () {
                var t = this,
                  e = i()(),
                  n = this.$dropzone.find(".note-dropzone-message");
                (this.documentEventHandlers.onDragenter = function (o) {
                  var i = t.context.invoke("codeview.isActivated"),
                    r = t.$editor.width() > 0 && t.$editor.height() > 0;
                  i ||
                    e.length ||
                    !r ||
                    (t.$editor.addClass("dragover"),
                    t.$dropzone.width(t.$editor.width()),
                    t.$dropzone.height(t.$editor.height()),
                    n.text(t.lang.image.dragImageHere)),
                    (e = e.add(o.target));
                }),
                  (this.documentEventHandlers.onDragleave = function (n) {
                    ((e = e.not(n.target)).length &&
                      "BODY" !== n.target.nodeName) ||
                      ((e = i()()), t.$editor.removeClass("dragover"));
                  }),
                  (this.documentEventHandlers.onDrop = function () {
                    (e = i()()), t.$editor.removeClass("dragover");
                  }),
                  this.$eventListener
                    .on("dragenter", this.documentEventHandlers.onDragenter)
                    .on("dragleave", this.documentEventHandlers.onDragleave)
                    .on("drop", this.documentEventHandlers.onDrop),
                  this.$dropzone
                    .on("dragenter", function () {
                      t.$dropzone.addClass("hover"),
                        n.text(t.lang.image.dropImage);
                    })
                    .on("dragleave", function () {
                      t.$dropzone.removeClass("hover"),
                        n.text(t.lang.image.dragImageHere);
                    }),
                  this.$dropzone
                    .on("drop", function (e) {
                      var n = e.originalEvent.dataTransfer;
                      e.preventDefault(),
                        n && n.files && n.files.length
                          ? (t.$editable.focus(),
                            t.context.invoke(
                              "editor.insertImagesOrCallback",
                              n.files
                            ))
                          : i.a.each(n.types, function (e, o) {
                              if (!(o.toLowerCase().indexOf("_moz_") > -1)) {
                                var r = n.getData(o);
                                o.toLowerCase().indexOf("text") > -1
                                  ? t.context.invoke("editor.pasteHTML", r)
                                  : i()(r).each(function (e, n) {
                                      t.context.invoke("editor.insertNode", n);
                                    });
                              }
                            });
                    })
                    .on("dragover", !1);
              },
            },
            {
              key: "destroy",
              value: function () {
                var t = this;
                Object.keys(this.documentEventHandlers).forEach(function (e) {
                  t.$eventListener.off(
                    e.substr(2).toLowerCase(),
                    t.documentEventHandlers[e]
                  );
                }),
                  (this.documentEventHandlers = {});
              },
            },
          ]) && Mt(e.prototype, n),
          o && Mt(e, o),
          t
        );
      })();
      function jt(t) {
        if ("undefined" == typeof Symbol || null == t[Symbol.iterator]) {
          if (
            Array.isArray(t) ||
            (t = (function (t, e) {
              if (!t) return;
              if ("string" == typeof t) return Ut(t, e);
              var n = Object.prototype.toString.call(t).slice(8, -1);
              "Object" === n && t.constructor && (n = t.constructor.name);
              if ("Map" === n || "Set" === n) return Array.from(n);
              if (
                "Arguments" === n ||
                /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
              )
                return Ut(t, e);
            })(t))
          ) {
            var e = 0,
              n = function () {};
            return {
              s: n,
              n: function () {
                return e >= t.length
                  ? { done: !0 }
                  : { done: !1, value: t[e++] };
              },
              e: function (t) {
                throw t;
              },
              f: n,
            };
          }
          throw new TypeError(
            "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
          );
        }
        var o,
          i,
          r = !0,
          a = !1;
        return {
          s: function () {
            o = t[Symbol.iterator]();
          },
          n: function () {
            var t = o.next();
            return (r = t.done), t;
          },
          e: function (t) {
            (a = !0), (i = t);
          },
          f: function () {
            try {
              r || null == o.return || o.return();
            } finally {
              if (a) throw i;
            }
          },
        };
      }
      function Ut(t, e) {
        (null == e || e > t.length) && (e = t.length);
        for (var n = 0, o = new Array(e); n < e; n++) o[n] = t[n];
        return o;
      }
      function Wt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var Kt = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$editor = e.layoutInfo.editor),
            (this.$editable = e.layoutInfo.editable),
            (this.$codable = e.layoutInfo.codable),
            (this.options = e.options),
            (this.CodeMirrorConstructor = window.CodeMirror),
            this.options.codemirror.CodeMirrorConstructor &&
              (this.CodeMirrorConstructor = this.options.codemirror.CodeMirrorConstructor);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "sync",
              value: function (t) {
                var e = this.isActivated(),
                  n = this.CodeMirrorConstructor;
                e &&
                  (t
                    ? n
                      ? this.$codable.data("cmEditor").getDoc().setValue(t)
                      : this.$codable.val(t)
                    : n && this.$codable.data("cmEditor").save());
              },
            },
            {
              key: "initialize",
              value: function () {
                var t = this;
                this.$codable.on("keyup", function (e) {
                  e.keyCode === xt.code.ESCAPE && t.deactivate();
                });
              },
            },
            {
              key: "isActivated",
              value: function () {
                return this.$editor.hasClass("codeview");
              },
            },
            {
              key: "toggle",
              value: function () {
                this.isActivated() ? this.deactivate() : this.activate(),
                  this.context.triggerEvent("codeview.toggled");
              },
            },
            {
              key: "purify",
              value: function (t) {
                if (
                  this.options.codeviewFilter &&
                  ((t = t.replace(this.options.codeviewFilterRegex, "")),
                  this.options.codeviewIframeFilter)
                ) {
                  var e = this.options.codeviewIframeWhitelistSrc.concat(
                    this.options.codeviewIframeWhitelistSrcBase
                  );
                  t = t.replace(
                    /(<iframe.*?>.*?(?:<\/iframe>)?)/gi,
                    function (t) {
                      if (
                        /<.+src(?==?('|"|\s)?)[\s\S]+src(?=('|"|\s)?)[^>]*?>/i.test(
                          t
                        )
                      )
                        return "";
                      var n,
                        o = jt(e);
                      try {
                        for (o.s(); !(n = o.n()).done; ) {
                          var i = n.value;
                          if (
                            new RegExp(
                              'src="(https?:)?//' +
                                i.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") +
                                '/(.+)"'
                            ).test(t)
                          )
                            return t;
                        }
                      } catch (t) {
                        o.e(t);
                      } finally {
                        o.f();
                      }
                      return "";
                    }
                  );
                }
                return t;
              },
            },
            {
              key: "activate",
              value: function () {
                var t = this,
                  e = this.CodeMirrorConstructor;
                if (
                  (this.$codable.val(
                    pt.html(this.$editable, this.options.prettifyHtml)
                  ),
                  this.$codable.height(this.$editable.height()),
                  this.context.invoke("toolbar.updateCodeview", !0),
                  this.context.invoke("airPopover.updateCodeview", !0),
                  this.$editor.addClass("codeview"),
                  this.$codable.focus(),
                  e)
                ) {
                  var n = e.fromTextArea(
                    this.$codable[0],
                    this.options.codemirror
                  );
                  if (this.options.codemirror.tern) {
                    var o = new e.TernServer(this.options.codemirror.tern);
                    (n.ternServer = o),
                      n.on("cursorActivity", function (t) {
                        o.updateArgHints(t);
                      });
                  }
                  n.on("blur", function (e) {
                    t.context.triggerEvent("blur.codeview", n.getValue(), e);
                  }),
                    n.on("change", function () {
                      t.context.triggerEvent(
                        "change.codeview",
                        n.getValue(),
                        n
                      );
                    }),
                    n.setSize(null, this.$editable.outerHeight()),
                    this.$codable.data("cmEditor", n);
                } else
                  this.$codable.on("blur", function (e) {
                    t.context.triggerEvent(
                      "blur.codeview",
                      t.$codable.val(),
                      e
                    );
                  }),
                    this.$codable.on("input", function () {
                      t.context.triggerEvent(
                        "change.codeview",
                        t.$codable.val(),
                        t.$codable
                      );
                    });
              },
            },
            {
              key: "deactivate",
              value: function () {
                if (this.CodeMirrorConstructor) {
                  var t = this.$codable.data("cmEditor");
                  this.$codable.val(t.getValue()), t.toTextArea();
                }
                var e = this.purify(
                    pt.value(this.$codable, this.options.prettifyHtml) ||
                      pt.emptyPara
                  ),
                  n = this.$editable.html() !== e;
                this.$editable.html(e),
                  this.$editable.height(
                    this.options.height ? this.$codable.height() : "auto"
                  ),
                  this.$editor.removeClass("codeview"),
                  n &&
                    this.context.triggerEvent(
                      "change",
                      this.$editable.html(),
                      this.$editable
                    ),
                  this.$editable.focus(),
                  this.context.invoke("toolbar.updateCodeview", !1),
                  this.context.invoke("airPopover.updateCodeview", !1);
              },
            },
            {
              key: "destroy",
              value: function () {
                this.isActivated() && this.deactivate();
              },
            },
          ]) && Wt(e.prototype, n),
          o && Wt(e, o),
          t
        );
      })();
      function Vt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var qt = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.$document = i()(document)),
            (this.$statusbar = e.layoutInfo.statusbar),
            (this.$editable = e.layoutInfo.editable),
            (this.options = e.options);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                var t = this;
                this.options.airMode || this.options.disableResizeEditor
                  ? this.destroy()
                  : this.$statusbar.on("mousedown", function (e) {
                      e.preventDefault(), e.stopPropagation();
                      var n =
                          t.$editable.offset().top - t.$document.scrollTop(),
                        o = function (e) {
                          var o = e.clientY - (n + 24);
                          (o =
                            t.options.minheight > 0
                              ? Math.max(o, t.options.minheight)
                              : o),
                            (o =
                              t.options.maxHeight > 0
                                ? Math.min(o, t.options.maxHeight)
                                : o),
                            t.$editable.height(o);
                        };
                      t.$document
                        .on("mousemove", o)
                        .one("mouseup", function () {
                          t.$document.off("mousemove", o);
                        });
                    });
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$statusbar.off(), this.$statusbar.addClass("locked");
              },
            },
          ]) && Vt(e.prototype, n),
          o && Vt(e, o),
          t
        );
      })();
      function _t(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var Gt = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$editor = e.layoutInfo.editor),
            (this.$toolbar = e.layoutInfo.toolbar),
            (this.$editable = e.layoutInfo.editable),
            (this.$codable = e.layoutInfo.codable),
            (this.$window = i()(window)),
            (this.$scrollbar = i()("html, body")),
            (this.onResize = function () {
              n.resizeTo({ h: n.$window.height() - n.$toolbar.outerHeight() });
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "resizeTo",
              value: function (t) {
                this.$editable.css("height", t.h),
                  this.$codable.css("height", t.h),
                  this.$codable.data("cmeditor") &&
                    this.$codable.data("cmeditor").setsize(null, t.h);
              },
            },
            {
              key: "toggle",
              value: function () {
                this.$editor.toggleClass("fullscreen"),
                  this.isFullscreen()
                    ? (this.$editable.data(
                        "orgHeight",
                        this.$editable.css("height")
                      ),
                      this.$editable.data(
                        "orgMaxHeight",
                        this.$editable.css("maxHeight")
                      ),
                      this.$editable.css("maxHeight", ""),
                      this.$window
                        .on("resize", this.onResize)
                        .trigger("resize"),
                      this.$scrollbar.css("overflow", "hidden"))
                    : (this.$window.off("resize", this.onResize),
                      this.resizeTo({ h: this.$editable.data("orgHeight") }),
                      this.$editable.css(
                        "maxHeight",
                        this.$editable.css("orgMaxHeight")
                      ),
                      this.$scrollbar.css("overflow", "visible")),
                  this.context.invoke(
                    "toolbar.updateFullscreen",
                    this.isFullscreen()
                  );
              },
            },
            {
              key: "isFullscreen",
              value: function () {
                return this.$editor.hasClass("fullscreen");
              },
            },
          ]) && _t(e.prototype, n),
          o && _t(e, o),
          t
        );
      })();
      function Yt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var Zt = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$document = i()(document)),
            (this.$editingArea = e.layoutInfo.editingArea),
            (this.options = e.options),
            (this.lang = this.options.langInfo),
            (this.events = {
              "summernote.mousedown": function (t, e) {
                n.update(e.target, e) && e.preventDefault();
              },
              "summernote.keyup summernote.scroll summernote.change summernote.dialog.shown": function () {
                n.update();
              },
              "summernote.disable summernote.blur": function () {
                n.hide();
              },
              "summernote.codeview.toggled": function () {
                n.update();
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                var t = this;
                (this.$handle = i()(
                  [
                    '<div class="note-handle">',
                    '<div class="note-control-selection">',
                    '<div class="note-control-selection-bg"></div>',
                    '<div class="note-control-holder note-control-nw"></div>',
                    '<div class="note-control-holder note-control-ne"></div>',
                    '<div class="note-control-holder note-control-sw"></div>',
                    '<div class="',
                    this.options.disableResizeImage
                      ? "note-control-holder"
                      : "note-control-sizing",
                    ' note-control-se"></div>',
                    this.options.disableResizeImage
                      ? ""
                      : '<div class="note-control-selection-info"></div>',
                    "</div>",
                    "</div>",
                  ].join("")
                ).prependTo(this.$editingArea)),
                  this.$handle.on("mousedown", function (e) {
                    if (pt.isControlSizing(e.target)) {
                      e.preventDefault(), e.stopPropagation();
                      var n = t.$handle
                          .find(".note-control-selection")
                          .data("target"),
                        o = n.offset(),
                        i = t.$document.scrollTop(),
                        r = function (e) {
                          t.context.invoke(
                            "editor.resizeTo",
                            {
                              x: e.clientX - o.left,
                              y: e.clientY - (o.top - i),
                            },
                            n,
                            !e.shiftKey
                          ),
                            t.update(n[0], e);
                        };
                      t.$document
                        .on("mousemove", r)
                        .one("mouseup", function (e) {
                          e.preventDefault(),
                            t.$document.off("mousemove", r),
                            t.context.invoke("editor.afterCommand");
                        }),
                        n.data("ratio") ||
                          n.data("ratio", n.height() / n.width());
                    }
                  }),
                  this.$handle.on("wheel", function (e) {
                    e.preventDefault(), t.update();
                  });
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$handle.remove();
              },
            },
            {
              key: "update",
              value: function (t, e) {
                if (this.context.isDisabled()) return !1;
                var n = pt.isImg(t),
                  o = this.$handle.find(".note-control-selection");
                if ((this.context.invoke("imagePopover.update", t, e), n)) {
                  var r = i()(t),
                    a = r.position(),
                    s = {
                      left: a.left + parseInt(r.css("marginLeft"), 10),
                      top: a.top + parseInt(r.css("marginTop"), 10),
                    },
                    l = { w: r.outerWidth(!1), h: r.outerHeight(!1) };
                  o.css({
                    display: "block",
                    left: s.left,
                    top: s.top,
                    width: l.w,
                    height: l.h,
                  }).data("target", r);
                  var c = new Image();
                  c.src = r.attr("src");
                  var u =
                    l.w +
                    "x" +
                    l.h +
                    " (" +
                    this.lang.image.original +
                    ": " +
                    c.width +
                    "x" +
                    c.height +
                    ")";
                  o.find(".note-control-selection-info").text(u),
                    this.context.invoke("editor.saveTarget", t);
                } else this.hide();
                return n;
              },
            },
            {
              key: "hide",
              value: function () {
                this.context.invoke("editor.clearTarget"),
                  this.$handle.children().hide();
              },
            },
          ]) && Yt(e.prototype, n),
          o && Yt(e, o),
          t
        );
      })();
      function Xt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var Qt = /^([A-Za-z][A-Za-z0-9+-.]*\:[\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\.)?(.+)$/i,
        Jt = (function () {
          function t(e) {
            var n = this;
            !(function (t, e) {
              if (!(t instanceof e))
                throw new TypeError("Cannot call a class as a function");
            })(this, t),
              (this.context = e),
              (this.options = e.options),
              (this.events = {
                "summernote.keyup": function (t, e) {
                  e.isDefaultPrevented() || n.handleKeyup(e);
                },
                "summernote.keydown": function (t, e) {
                  n.handleKeydown(e);
                },
              });
          }
          var e, n, o;
          return (
            (e = t),
            (n = [
              {
                key: "initialize",
                value: function () {
                  this.lastWordRange = null;
                },
              },
              {
                key: "destroy",
                value: function () {
                  this.lastWordRange = null;
                },
              },
              {
                key: "replace",
                value: function () {
                  if (this.lastWordRange) {
                    var t = this.lastWordRange.toString(),
                      e = t.match(Qt);
                    if (e && (e[1] || e[2])) {
                      var n = e[1] ? t : "http://" + t,
                        o = this.options.showDomainOnlyForAutolink
                          ? t
                              .replace(
                                /^(?:https?:\/\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\.)?/i,
                                ""
                              )
                              .split("/")[0]
                          : t,
                        r = i()("<a />").html(o).attr("href", n)[0];
                      this.context.options.linkTargetBlank &&
                        i()(r).attr("target", "_blank"),
                        this.lastWordRange.insertNode(r),
                        (this.lastWordRange = null),
                        this.context.invoke("editor.focus");
                    }
                  }
                },
              },
              {
                key: "handleKeydown",
                value: function (t) {
                  if (C.contains([xt.code.ENTER, xt.code.SPACE], t.keyCode)) {
                    var e = this.context
                      .invoke("editor.createRange")
                      .getWordRange();
                    this.lastWordRange = e;
                  }
                },
              },
              {
                key: "handleKeyup",
                value: function (t) {
                  C.contains([xt.code.ENTER, xt.code.SPACE], t.keyCode) &&
                    this.replace();
                },
              },
            ]) && Xt(e.prototype, n),
            o && Xt(e, o),
            t
          );
        })();
      function te(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var ee = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.$note = e.layoutInfo.note),
            (this.events = {
              "summernote.change": function () {
                n.$note.val(e.invoke("code"));
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return pt.isTextarea(this.$note[0]);
              },
            },
          ]) && te(e.prototype, n),
          o && te(e, o),
          t
        );
      })();
      function ne(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var oe = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.options = e.options.replace || {}),
            (this.keys = [
              xt.code.ENTER,
              xt.code.SPACE,
              xt.code.PERIOD,
              xt.code.COMMA,
              xt.code.SEMICOLON,
              xt.code.SLASH,
            ]),
            (this.previousKeydownCode = null),
            (this.events = {
              "summernote.keyup": function (t, e) {
                e.isDefaultPrevented() || n.handleKeyup(e);
              },
              "summernote.keydown": function (t, e) {
                n.handleKeydown(e);
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return !!this.options.match;
              },
            },
            {
              key: "initialize",
              value: function () {
                this.lastWord = null;
              },
            },
            {
              key: "destroy",
              value: function () {
                this.lastWord = null;
              },
            },
            {
              key: "replace",
              value: function () {
                if (this.lastWord) {
                  var t = this,
                    e = this.lastWord.toString();
                  this.options.match(e, function (e) {
                    if (e) {
                      var n = "";
                      if (
                        ("string" == typeof e
                          ? (n = pt.createText(e))
                          : e instanceof jQuery
                          ? (n = e[0])
                          : e instanceof Node && (n = e),
                        !n)
                      )
                        return;
                      t.lastWord.insertNode(n),
                        (t.lastWord = null),
                        t.context.invoke("editor.focus");
                    }
                  });
                }
              },
            },
            {
              key: "handleKeydown",
              value: function (t) {
                if (
                  this.previousKeydownCode &&
                  C.contains(this.keys, this.previousKeydownCode)
                )
                  this.previousKeydownCode = t.keyCode;
                else {
                  if (C.contains(this.keys, t.keyCode)) {
                    var e = this.context
                      .invoke("editor.createRange")
                      .getWordRange();
                    this.lastWord = e;
                  }
                  this.previousKeydownCode = t.keyCode;
                }
              },
            },
            {
              key: "handleKeyup",
              value: function (t) {
                C.contains(this.keys, t.keyCode) && this.replace();
              },
            },
          ]) && ne(e.prototype, n),
          o && ne(e, o),
          t
        );
      })();
      function ie(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var re = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$editingArea = e.layoutInfo.editingArea),
            (this.options = e.options),
            !0 === this.options.inheritPlaceholder &&
              (this.options.placeholder =
                this.context.$note.attr("placeholder") ||
                this.options.placeholder),
            (this.events = {
              "summernote.init summernote.change": function () {
                n.update();
              },
              "summernote.codeview.toggled": function () {
                n.update();
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return !!this.options.placeholder;
              },
            },
            {
              key: "initialize",
              value: function () {
                var t = this;
                (this.$placeholder = i()('<div class="note-placeholder">')),
                  this.$placeholder
                    .on("click", function () {
                      t.context.invoke("focus");
                    })
                    .html(this.options.placeholder)
                    .prependTo(this.$editingArea),
                  this.update();
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$placeholder.remove();
              },
            },
            {
              key: "update",
              value: function () {
                var t =
                  !this.context.invoke("codeview.isActivated") &&
                  this.context.invoke("editor.isEmpty");
                this.$placeholder.toggle(t);
              },
            },
          ]) && ie(e.prototype, n),
          o && ie(e, o),
          t
        );
      })();
      function ae(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var se = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.ui = i.a.summernote.ui),
            (this.context = e),
            (this.$toolbar = e.layoutInfo.toolbar),
            (this.options = e.options),
            (this.lang = this.options.langInfo),
            (this.invertedKeyMap = g.invertObject(
              this.options.keyMap[m.isMac ? "mac" : "pc"]
            ));
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "representShortcut",
              value: function (t) {
                var e = this.invertedKeyMap[t];
                return this.options.shortcuts && e
                  ? (m.isMac &&
                      (e = e.replace("CMD", "⌘").replace("SHIFT", "⇧")),
                    " (" +
                      (e = e
                        .replace("BACKSLASH", "\\")
                        .replace("SLASH", "/")
                        .replace("LEFTBRACKET", "[")
                        .replace("RIGHTBRACKET", "]")) +
                      ")")
                  : "";
              },
            },
            {
              key: "button",
              value: function (t) {
                return (
                  !this.options.tooltip && t.tooltip && delete t.tooltip,
                  (t.container = this.options.container),
                  this.ui.button(t)
                );
              },
            },
            {
              key: "initialize",
              value: function () {
                this.addToolbarButtons(),
                  this.addImagePopoverButtons(),
                  this.addLinkPopoverButtons(),
                  this.addTablePopoverButtons(),
                  (this.fontInstalledMap = {});
              },
            },
            {
              key: "destroy",
              value: function () {
                delete this.fontInstalledMap;
              },
            },
            {
              key: "isFontInstalled",
              value: function (t) {
                return (
                  Object.prototype.hasOwnProperty.call(
                    this.fontInstalledMap,
                    t
                  ) ||
                    (this.fontInstalledMap[t] =
                      m.isFontInstalled(t) ||
                      C.contains(this.options.fontNamesIgnoreCheck, t)),
                  this.fontInstalledMap[t]
                );
              },
            },
            {
              key: "isFontDeservedToAdd",
              value: function (t) {
                return (
                  "" !== (t = t.toLowerCase()) &&
                  this.isFontInstalled(t) &&
                  -1 === m.genericFontFamilies.indexOf(t)
                );
              },
            },
            {
              key: "colorPalette",
              value: function (t, e, n, o) {
                var r = this;
                return this.ui
                  .buttonGroup({
                    className: "note-color " + t,
                    children: [
                      this.button({
                        className: "note-current-color-button",
                        contents: this.ui.icon(
                          this.options.icons.font + " note-recent-color"
                        ),
                        tooltip: e,
                        click: function (t) {
                          var e = i()(t.currentTarget);
                          n && o
                            ? r.context.invoke("editor.color", {
                                backColor: e.attr("data-backColor"),
                                foreColor: e.attr("data-foreColor"),
                              })
                            : n
                            ? r.context.invoke("editor.color", {
                                backColor: e.attr("data-backColor"),
                              })
                            : o &&
                              r.context.invoke("editor.color", {
                                foreColor: e.attr("data-foreColor"),
                              });
                        },
                        callback: function (t) {
                          var e = t.find(".note-recent-color");
                          n &&
                            (e.css(
                              "background-color",
                              r.options.colorButton.backColor
                            ),
                            t.attr(
                              "data-backColor",
                              r.options.colorButton.backColor
                            )),
                            o
                              ? (e.css(
                                  "color",
                                  r.options.colorButton.foreColor
                                ),
                                t.attr(
                                  "data-foreColor",
                                  r.options.colorButton.foreColor
                                ))
                              : e.css("color", "transparent");
                        },
                      }),
                      this.button({
                        className: "dropdown-toggle",
                        contents: this.ui.dropdownButtonContents(
                          "",
                          this.options
                        ),
                        tooltip: this.lang.color.more,
                        data: { toggle: "dropdown" },
                      }),
                      this.ui.dropdown({
                        items:
                          (n
                            ? [
                                '<div class="note-palette">',
                                '<div class="note-palette-title">' +
                                  this.lang.color.background +
                                  "</div>",
                                "<div>",
                                '<button type="button" class="note-color-reset btn btn-light btn-default" data-event="backColor" data-value="transparent">',
                                this.lang.color.transparent,
                                "</button>",
                                "</div>",
                                '<div class="note-holder" data-event="backColor">\x3c!-- back colors --\x3e</div>',
                                "<div>",
                                '<button type="button" class="note-color-select btn btn-light btn-default" data-event="openPalette" data-value="backColorPicker">',
                                this.lang.color.cpSelect,
                                "</button>",
                                '<input type="color" id="backColorPicker" class="note-btn note-color-select-btn" value="' +
                                  this.options.colorButton.backColor +
                                  '" data-event="backColorPalette">',
                                "</div>",
                                '<div class="note-holder-custom" id="backColorPalette" data-event="backColor"></div>',
                                "</div>",
                              ].join("")
                            : "") +
                          (o
                            ? [
                                '<div class="note-palette">',
                                '<div class="note-palette-title">' +
                                  this.lang.color.foreground +
                                  "</div>",
                                "<div>",
                                '<button type="button" class="note-color-reset btn btn-light btn-default" data-event="removeFormat" data-value="foreColor">',
                                this.lang.color.resetToDefault,
                                "</button>",
                                "</div>",
                                '<div class="note-holder" data-event="foreColor">\x3c!-- fore colors --\x3e</div>',
                                "<div>",
                                '<button type="button" class="note-color-select btn btn-light btn-default" data-event="openPalette" data-value="foreColorPicker">',
                                this.lang.color.cpSelect,
                                "</button>",
                                '<input type="color" id="foreColorPicker" class="note-btn note-color-select-btn" value="' +
                                  this.options.colorButton.foreColor +
                                  '" data-event="foreColorPalette">',
                                "</div>",
                                '<div class="note-holder-custom" id="foreColorPalette" data-event="foreColor"></div>',
                                "</div>",
                              ].join("")
                            : ""),
                        callback: function (t) {
                          t.find(".note-holder").each(function (t, e) {
                            var n = i()(e);
                            n.append(
                              r.ui
                                .palette({
                                  colors: r.options.colors,
                                  colorsName: r.options.colorsName,
                                  eventName: n.data("event"),
                                  container: r.options.container,
                                  tooltip: r.options.tooltip,
                                })
                                .render()
                            );
                          });
                          var e = [
                            [
                              "#FFFFFF",
                              "#FFFFFF",
                              "#FFFFFF",
                              "#FFFFFF",
                              "#FFFFFF",
                              "#FFFFFF",
                              "#FFFFFF",
                              "#FFFFFF",
                            ],
                          ];
                          t.find(".note-holder-custom").each(function (t, n) {
                            var o = i()(n);
                            o.append(
                              r.ui
                                .palette({
                                  colors: e,
                                  colorsName: e,
                                  eventName: o.data("event"),
                                  container: r.options.container,
                                  tooltip: r.options.tooltip,
                                })
                                .render()
                            );
                          }),
                            t.find("input[type=color]").each(function (e, n) {
                              i()(n).change(function () {
                                var e = t
                                    .find("#" + i()(this).data("event"))
                                    .find(".note-color-btn")
                                    .first(),
                                  n = this.value.toUpperCase();
                                e
                                  .css("background-color", n)
                                  .attr("aria-label", n)
                                  .attr("data-value", n)
                                  .attr("data-original-title", n),
                                  e.click();
                              });
                            });
                        },
                        click: function (e) {
                          e.stopPropagation();
                          var n = i()("." + t).find(".note-dropdown-menu"),
                            o = i()(e.target),
                            a = o.data("event"),
                            s = o.attr("data-value");
                          if ("openPalette" === a) {
                            var l = n.find("#" + s),
                              c = i()(
                                n
                                  .find("#" + l.data("event"))
                                  .find(".note-color-row")[0]
                              ),
                              u = c.find(".note-color-btn").last().detach(),
                              d = l.val();
                            u
                              .css("background-color", d)
                              .attr("aria-label", d)
                              .attr("data-value", d)
                              .attr("data-original-title", d),
                              c.prepend(u),
                              l.click();
                          } else {
                            if (C.contains(["backColor", "foreColor"], a)) {
                              var h =
                                  "backColor" === a
                                    ? "background-color"
                                    : "color",
                                f = o
                                  .closest(".note-color")
                                  .find(".note-recent-color"),
                                p = o
                                  .closest(".note-color")
                                  .find(".note-current-color-button");
                              f.css(h, s), p.attr("data-" + a, s);
                            }
                            r.context.invoke("editor." + a, s);
                          }
                        },
                      }),
                    ],
                  })
                  .render();
              },
            },
            {
              key: "addToolbarButtons",
              value: function () {
                var t = this;
                this.context.memo("button.style", function () {
                  return t.ui
                    .buttonGroup([
                      t.button({
                        className: "dropdown-toggle",
                        contents: t.ui.dropdownButtonContents(
                          t.ui.icon(t.options.icons.magic),
                          t.options
                        ),
                        tooltip: t.lang.style.style,
                        data: { toggle: "dropdown" },
                      }),
                      t.ui.dropdown({
                        className: "dropdown-style",
                        items: t.options.styleTags,
                        title: t.lang.style.style,
                        template: function (e) {
                          "string" == typeof e &&
                            (e = {
                              tag: e,
                              title: Object.prototype.hasOwnProperty.call(
                                t.lang.style,
                                e
                              )
                                ? t.lang.style[e]
                                : e,
                            });
                          var n = e.tag,
                            o = e.title;
                          return (
                            "<" +
                            n +
                            (e.style ? ' style="' + e.style + '" ' : "") +
                            (e.className
                              ? ' class="' + e.className + '"'
                              : "") +
                            ">" +
                            o +
                            "</" +
                            n +
                            ">"
                          );
                        },
                        click: t.context.createInvokeHandler(
                          "editor.formatBlock"
                        ),
                      }),
                    ])
                    .render();
                });
                for (
                  var e = function (e, n) {
                      var o = t.options.styleTags[e];
                      t.context.memo("button.style." + o, function () {
                        return t
                          .button({
                            className: "note-btn-style-" + o,
                            contents:
                              '<div data-value="' +
                              o +
                              '">' +
                              o.toUpperCase() +
                              "</div>",
                            tooltip: t.lang.style[o],
                            click: t.context.createInvokeHandler(
                              "editor.formatBlock"
                            ),
                          })
                          .render();
                      });
                    },
                    n = 0,
                    o = this.options.styleTags.length;
                  n < o;
                  n++
                )
                  e(n);
                this.context.memo("button.bold", function () {
                  return t
                    .button({
                      className: "note-btn-bold",
                      contents: t.ui.icon(t.options.icons.bold),
                      tooltip: t.lang.font.bold + t.representShortcut("bold"),
                      click: t.context.createInvokeHandlerAndUpdateState(
                        "editor.bold"
                      ),
                    })
                    .render();
                }),
                  this.context.memo("button.italic", function () {
                    return t
                      .button({
                        className: "note-btn-italic",
                        contents: t.ui.icon(t.options.icons.italic),
                        tooltip:
                          t.lang.font.italic + t.representShortcut("italic"),
                        click: t.context.createInvokeHandlerAndUpdateState(
                          "editor.italic"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.underline", function () {
                    return t
                      .button({
                        className: "note-btn-underline",
                        contents: t.ui.icon(t.options.icons.underline),
                        tooltip:
                          t.lang.font.underline +
                          t.representShortcut("underline"),
                        click: t.context.createInvokeHandlerAndUpdateState(
                          "editor.underline"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.clear", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.eraser),
                        tooltip:
                          t.lang.font.clear +
                          t.representShortcut("removeFormat"),
                        click: t.context.createInvokeHandler(
                          "editor.removeFormat"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.strikethrough", function () {
                    return t
                      .button({
                        className: "note-btn-strikethrough",
                        contents: t.ui.icon(t.options.icons.strikethrough),
                        tooltip:
                          t.lang.font.strikethrough +
                          t.representShortcut("strikethrough"),
                        click: t.context.createInvokeHandlerAndUpdateState(
                          "editor.strikethrough"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.superscript", function () {
                    return t
                      .button({
                        className: "note-btn-superscript",
                        contents: t.ui.icon(t.options.icons.superscript),
                        tooltip: t.lang.font.superscript,
                        click: t.context.createInvokeHandlerAndUpdateState(
                          "editor.superscript"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.subscript", function () {
                    return t
                      .button({
                        className: "note-btn-subscript",
                        contents: t.ui.icon(t.options.icons.subscript),
                        tooltip: t.lang.font.subscript,
                        click: t.context.createInvokeHandlerAndUpdateState(
                          "editor.subscript"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.fontname", function () {
                    var e = t.context.invoke("editor.currentStyle");
                    return (
                      t.options.addDefaultFonts &&
                        i.a.each(e["font-family"].split(","), function (e, n) {
                          (n = n.trim().replace(/['"]+/g, "")),
                            t.isFontDeservedToAdd(n) &&
                              -1 === t.options.fontNames.indexOf(n) &&
                              t.options.fontNames.push(n);
                        }),
                      t.ui
                        .buttonGroup([
                          t.button({
                            className: "dropdown-toggle",
                            contents: t.ui.dropdownButtonContents(
                              '<span class="note-current-fontname"></span>',
                              t.options
                            ),
                            tooltip: t.lang.font.name,
                            data: { toggle: "dropdown" },
                          }),
                          t.ui.dropdownCheck({
                            className: "dropdown-fontname",
                            checkClassName: t.options.icons.menuCheck,
                            items: t.options.fontNames.filter(
                              t.isFontInstalled.bind(t)
                            ),
                            title: t.lang.font.name,
                            template: function (t) {
                              return (
                                '<span style="font-family: ' +
                                m.validFontName(t) +
                                '">' +
                                t +
                                "</span>"
                              );
                            },
                            click: t.context.createInvokeHandlerAndUpdateState(
                              "editor.fontName"
                            ),
                          }),
                        ])
                        .render()
                    );
                  }),
                  this.context.memo("button.fontsize", function () {
                    return t.ui
                      .buttonGroup([
                        t.button({
                          className: "dropdown-toggle",
                          contents: t.ui.dropdownButtonContents(
                            '<span class="note-current-fontsize"></span>',
                            t.options
                          ),
                          tooltip: t.lang.font.size,
                          data: { toggle: "dropdown" },
                        }),
                        t.ui.dropdownCheck({
                          className: "dropdown-fontsize",
                          checkClassName: t.options.icons.menuCheck,
                          items: t.options.fontSizes,
                          title: t.lang.font.size,
                          click: t.context.createInvokeHandlerAndUpdateState(
                            "editor.fontSize"
                          ),
                        }),
                      ])
                      .render();
                  }),
                  this.context.memo("button.fontsizeunit", function () {
                    return t.ui
                      .buttonGroup([
                        t.button({
                          className: "dropdown-toggle",
                          contents: t.ui.dropdownButtonContents(
                            '<span class="note-current-fontsizeunit"></span>',
                            t.options
                          ),
                          tooltip: t.lang.font.sizeunit,
                          data: { toggle: "dropdown" },
                        }),
                        t.ui.dropdownCheck({
                          className: "dropdown-fontsizeunit",
                          checkClassName: t.options.icons.menuCheck,
                          items: t.options.fontSizeUnits,
                          title: t.lang.font.sizeunit,
                          click: t.context.createInvokeHandlerAndUpdateState(
                            "editor.fontSizeUnit"
                          ),
                        }),
                      ])
                      .render();
                  }),
                  this.context.memo("button.color", function () {
                    return t.colorPalette(
                      "note-color-all",
                      t.lang.color.recent,
                      !0,
                      !0
                    );
                  }),
                  this.context.memo("button.forecolor", function () {
                    return t.colorPalette(
                      "note-color-fore",
                      t.lang.color.foreground,
                      !1,
                      !0
                    );
                  }),
                  this.context.memo("button.backcolor", function () {
                    return t.colorPalette(
                      "note-color-back",
                      t.lang.color.background,
                      !0,
                      !1
                    );
                  }),
                  this.context.memo("button.ul", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.unorderedlist),
                        tooltip:
                          t.lang.lists.unordered +
                          t.representShortcut("insertUnorderedList"),
                        click: t.context.createInvokeHandler(
                          "editor.insertUnorderedList"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.ol", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.orderedlist),
                        tooltip:
                          t.lang.lists.ordered +
                          t.representShortcut("insertOrderedList"),
                        click: t.context.createInvokeHandler(
                          "editor.insertOrderedList"
                        ),
                      })
                      .render();
                  });
                var r = this.button({
                    contents: this.ui.icon(this.options.icons.alignLeft),
                    tooltip:
                      this.lang.paragraph.left +
                      this.representShortcut("justifyLeft"),
                    click: this.context.createInvokeHandler(
                      "editor.justifyLeft"
                    ),
                  }),
                  a = this.button({
                    contents: this.ui.icon(this.options.icons.alignCenter),
                    tooltip:
                      this.lang.paragraph.center +
                      this.representShortcut("justifyCenter"),
                    click: this.context.createInvokeHandler(
                      "editor.justifyCenter"
                    ),
                  }),
                  s = this.button({
                    contents: this.ui.icon(this.options.icons.alignRight),
                    tooltip:
                      this.lang.paragraph.right +
                      this.representShortcut("justifyRight"),
                    click: this.context.createInvokeHandler(
                      "editor.justifyRight"
                    ),
                  }),
                  l = this.button({
                    contents: this.ui.icon(this.options.icons.alignJustify),
                    tooltip:
                      this.lang.paragraph.justify +
                      this.representShortcut("justifyFull"),
                    click: this.context.createInvokeHandler(
                      "editor.justifyFull"
                    ),
                  }),
                  c = this.button({
                    contents: this.ui.icon(this.options.icons.outdent),
                    tooltip:
                      this.lang.paragraph.outdent +
                      this.representShortcut("outdent"),
                    click: this.context.createInvokeHandler("editor.outdent"),
                  }),
                  u = this.button({
                    contents: this.ui.icon(this.options.icons.indent),
                    tooltip:
                      this.lang.paragraph.indent +
                      this.representShortcut("indent"),
                    click: this.context.createInvokeHandler("editor.indent"),
                  });
                this.context.memo("button.justifyLeft", g.invoke(r, "render")),
                  this.context.memo(
                    "button.justifyCenter",
                    g.invoke(a, "render")
                  ),
                  this.context.memo(
                    "button.justifyRight",
                    g.invoke(s, "render")
                  ),
                  this.context.memo(
                    "button.justifyFull",
                    g.invoke(l, "render")
                  ),
                  this.context.memo("button.outdent", g.invoke(c, "render")),
                  this.context.memo("button.indent", g.invoke(u, "render")),
                  this.context.memo("button.paragraph", function () {
                    return t.ui
                      .buttonGroup([
                        t.button({
                          className: "dropdown-toggle",
                          contents: t.ui.dropdownButtonContents(
                            t.ui.icon(t.options.icons.alignLeft),
                            t.options
                          ),
                          tooltip: t.lang.paragraph.paragraph,
                          data: { toggle: "dropdown" },
                        }),
                        t.ui.dropdown([
                          t.ui.buttonGroup({
                            className: "note-align",
                            children: [r, a, s, l],
                          }),
                          t.ui.buttonGroup({
                            className: "note-list",
                            children: [c, u],
                          }),
                        ]),
                      ])
                      .render();
                  }),
                  this.context.memo("button.height", function () {
                    return t.ui
                      .buttonGroup([
                        t.button({
                          className: "dropdown-toggle",
                          contents: t.ui.dropdownButtonContents(
                            t.ui.icon(t.options.icons.textHeight),
                            t.options
                          ),
                          tooltip: t.lang.font.height,
                          data: { toggle: "dropdown" },
                        }),
                        t.ui.dropdownCheck({
                          items: t.options.lineHeights,
                          checkClassName: t.options.icons.menuCheck,
                          className: "dropdown-line-height",
                          title: t.lang.font.height,
                          click: t.context.createInvokeHandler(
                            "editor.lineHeight"
                          ),
                        }),
                      ])
                      .render();
                  }),
                  this.context.memo("button.table", function () {
                    return t.ui
                      .buttonGroup(
                        [
                          t.button({
                            className: "dropdown-toggle",
                            contents: t.ui.dropdownButtonContents(
                              t.ui.icon(t.options.icons.table),
                              t.options
                            ),
                            tooltip: t.lang.table.table,
                            data: { toggle: "dropdown" },
                          }),
                          t.ui.dropdown({
                            title: t.lang.table.table,
                            className: "note-table",
                            items: [
                              '<div class="note-dimension-picker">',
                              '<div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"></div>',
                              '<div class="note-dimension-picker-highlighted"></div>',
                              '<div class="note-dimension-picker-unhighlighted"></div>',
                              "</div>",
                              '<div class="note-dimension-display">1 x 1</div>',
                            ].join(""),
                          }),
                        ],
                        {
                          callback: function (e) {
                            e.find(".note-dimension-picker-mousecatcher")
                              .css({
                                width: t.options.insertTableMaxSize.col + "em",
                                height: t.options.insertTableMaxSize.row + "em",
                              })
                              .mousedown(
                                t.context.createInvokeHandler(
                                  "editor.insertTable"
                                )
                              )
                              .on("mousemove", t.tableMoveHandler.bind(t));
                          },
                        }
                      )
                      .render();
                  }),
                  this.context.memo("button.link", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.link),
                        tooltip:
                          t.lang.link.link +
                          t.representShortcut("linkDialog.show"),
                        click: t.context.createInvokeHandler("linkDialog.show"),
                      })
                      .render();
                  }),
                  this.context.memo("button.picture", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.picture),
                        tooltip: t.lang.image.image,
                        click: t.context.createInvokeHandler(
                          "imageDialog.show"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.video", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.video),
                        tooltip: t.lang.video.video,
                        click: t.context.createInvokeHandler(
                          "videoDialog.show"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.hr", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.minus),
                        tooltip:
                          t.lang.hr.insert +
                          t.representShortcut("insertHorizontalRule"),
                        click: t.context.createInvokeHandler(
                          "editor.insertHorizontalRule"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.fullscreen", function () {
                    return t
                      .button({
                        className: "btn-fullscreen note-codeview-keep",
                        contents: t.ui.icon(t.options.icons.arrowsAlt),
                        tooltip: t.lang.options.fullscreen,
                        click: t.context.createInvokeHandler(
                          "fullscreen.toggle"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.codeview", function () {
                    return t
                      .button({
                        className: "btn-codeview note-codeview-keep",
                        contents: t.ui.icon(t.options.icons.code),
                        tooltip: t.lang.options.codeview,
                        click: t.context.createInvokeHandler("codeview.toggle"),
                      })
                      .render();
                  }),
                  this.context.memo("button.redo", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.redo),
                        tooltip:
                          t.lang.history.redo + t.representShortcut("redo"),
                        click: t.context.createInvokeHandler("editor.redo"),
                      })
                      .render();
                  }),
                  this.context.memo("button.undo", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.undo),
                        tooltip:
                          t.lang.history.undo + t.representShortcut("undo"),
                        click: t.context.createInvokeHandler("editor.undo"),
                      })
                      .render();
                  }),
                  this.context.memo("button.help", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.question),
                        tooltip: t.lang.options.help,
                        click: t.context.createInvokeHandler("helpDialog.show"),
                      })
                      .render();
                  });
              },
            },
            {
              key: "addImagePopoverButtons",
              value: function () {
                var t = this;
                this.context.memo("button.resizeFull", function () {
                  return t
                    .button({
                      contents: '<span class="note-fontsize-10">100%</span>',
                      tooltip: t.lang.image.resizeFull,
                      click: t.context.createInvokeHandler(
                        "editor.resize",
                        "1"
                      ),
                    })
                    .render();
                }),
                  this.context.memo("button.resizeHalf", function () {
                    return t
                      .button({
                        contents: '<span class="note-fontsize-10">50%</span>',
                        tooltip: t.lang.image.resizeHalf,
                        click: t.context.createInvokeHandler(
                          "editor.resize",
                          "0.5"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.resizeQuarter", function () {
                    return t
                      .button({
                        contents: '<span class="note-fontsize-10">25%</span>',
                        tooltip: t.lang.image.resizeQuarter,
                        click: t.context.createInvokeHandler(
                          "editor.resize",
                          "0.25"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.resizeNone", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.rollback),
                        tooltip: t.lang.image.resizeNone,
                        click: t.context.createInvokeHandler(
                          "editor.resize",
                          "0"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.floatLeft", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.floatLeft),
                        tooltip: t.lang.image.floatLeft,
                        click: t.context.createInvokeHandler(
                          "editor.floatMe",
                          "left"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.floatRight", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.floatRight),
                        tooltip: t.lang.image.floatRight,
                        click: t.context.createInvokeHandler(
                          "editor.floatMe",
                          "right"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.floatNone", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.rollback),
                        tooltip: t.lang.image.floatNone,
                        click: t.context.createInvokeHandler(
                          "editor.floatMe",
                          "none"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.removeMedia", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.trash),
                        tooltip: t.lang.image.remove,
                        click: t.context.createInvokeHandler(
                          "editor.removeMedia"
                        ),
                      })
                      .render();
                  });
              },
            },
            {
              key: "addLinkPopoverButtons",
              value: function () {
                var t = this;
                this.context.memo("button.linkDialogShow", function () {
                  return t
                    .button({
                      contents: t.ui.icon(t.options.icons.link),
                      tooltip: t.lang.link.edit,
                      click: t.context.createInvokeHandler("linkDialog.show"),
                    })
                    .render();
                }),
                  this.context.memo("button.unlink", function () {
                    return t
                      .button({
                        contents: t.ui.icon(t.options.icons.unlink),
                        tooltip: t.lang.link.unlink,
                        click: t.context.createInvokeHandler("editor.unlink"),
                      })
                      .render();
                  });
              },
            },
            {
              key: "addTablePopoverButtons",
              value: function () {
                var t = this;
                this.context.memo("button.addRowUp", function () {
                  return t
                    .button({
                      className: "btn-md",
                      contents: t.ui.icon(t.options.icons.rowAbove),
                      tooltip: t.lang.table.addRowAbove,
                      click: t.context.createInvokeHandler(
                        "editor.addRow",
                        "top"
                      ),
                    })
                    .render();
                }),
                  this.context.memo("button.addRowDown", function () {
                    return t
                      .button({
                        className: "btn-md",
                        contents: t.ui.icon(t.options.icons.rowBelow),
                        tooltip: t.lang.table.addRowBelow,
                        click: t.context.createInvokeHandler(
                          "editor.addRow",
                          "bottom"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.addColLeft", function () {
                    return t
                      .button({
                        className: "btn-md",
                        contents: t.ui.icon(t.options.icons.colBefore),
                        tooltip: t.lang.table.addColLeft,
                        click: t.context.createInvokeHandler(
                          "editor.addCol",
                          "left"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.addColRight", function () {
                    return t
                      .button({
                        className: "btn-md",
                        contents: t.ui.icon(t.options.icons.colAfter),
                        tooltip: t.lang.table.addColRight,
                        click: t.context.createInvokeHandler(
                          "editor.addCol",
                          "right"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.deleteRow", function () {
                    return t
                      .button({
                        className: "btn-md",
                        contents: t.ui.icon(t.options.icons.rowRemove),
                        tooltip: t.lang.table.delRow,
                        click: t.context.createInvokeHandler(
                          "editor.deleteRow"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.deleteCol", function () {
                    return t
                      .button({
                        className: "btn-md",
                        contents: t.ui.icon(t.options.icons.colRemove),
                        tooltip: t.lang.table.delCol,
                        click: t.context.createInvokeHandler(
                          "editor.deleteCol"
                        ),
                      })
                      .render();
                  }),
                  this.context.memo("button.deleteTable", function () {
                    return t
                      .button({
                        className: "btn-md",
                        contents: t.ui.icon(t.options.icons.trash),
                        tooltip: t.lang.table.delTable,
                        click: t.context.createInvokeHandler(
                          "editor.deleteTable"
                        ),
                      })
                      .render();
                  });
              },
            },
            {
              key: "build",
              value: function (t, e) {
                for (var n = 0, o = e.length; n < o; n++) {
                  for (
                    var i = e[n],
                      r = Array.isArray(i) ? i[0] : i,
                      a = Array.isArray(i)
                        ? 1 === i.length
                          ? [i[0]]
                          : i[1]
                        : [i],
                      s = this.ui
                        .buttonGroup({ className: "note-" + r })
                        .render(),
                      l = 0,
                      c = a.length;
                    l < c;
                    l++
                  ) {
                    var u = this.context.memo("button." + a[l]);
                    u && s.append("function" == typeof u ? u(this.context) : u);
                  }
                  s.appendTo(t);
                }
              },
            },
            {
              key: "updateCurrentStyle",
              value: function (t) {
                var e = this,
                  n = t || this.$toolbar,
                  o = this.context.invoke("editor.currentStyle");
                if (
                  (this.updateBtnStates(n, {
                    ".note-btn-bold": function () {
                      return "bold" === o["font-bold"];
                    },
                    ".note-btn-italic": function () {
                      return "italic" === o["font-italic"];
                    },
                    ".note-btn-underline": function () {
                      return "underline" === o["font-underline"];
                    },
                    ".note-btn-subscript": function () {
                      return "subscript" === o["font-subscript"];
                    },
                    ".note-btn-superscript": function () {
                      return "superscript" === o["font-superscript"];
                    },
                    ".note-btn-strikethrough": function () {
                      return "strikethrough" === o["font-strikethrough"];
                    },
                  }),
                  o["font-family"])
                ) {
                  var r = o["font-family"].split(",").map(function (t) {
                      return t
                        .replace(/[\'\"]/g, "")
                        .replace(/\s+$/, "")
                        .replace(/^\s+/, "");
                    }),
                    a = C.find(r, this.isFontInstalled.bind(this));
                  n.find(".dropdown-fontname a").each(function (t, e) {
                    var n = i()(e),
                      o = n.data("value") + "" == a + "";
                    n.toggleClass("checked", o);
                  }),
                    n
                      .find(".note-current-fontname")
                      .text(a)
                      .css("font-family", a);
                }
                if (o["font-size"]) {
                  var s = o["font-size"];
                  n.find(".dropdown-fontsize a").each(function (t, e) {
                    var n = i()(e),
                      o = n.data("value") + "" == s + "";
                    n.toggleClass("checked", o);
                  }),
                    n.find(".note-current-fontsize").text(s);
                  var l = o["font-size-unit"];
                  n.find(".dropdown-fontsizeunit a").each(function (t, e) {
                    var n = i()(e),
                      o = n.data("value") + "" == l + "";
                    n.toggleClass("checked", o);
                  }),
                    n.find(".note-current-fontsizeunit").text(l);
                }
                if (o["line-height"]) {
                  var c = o["line-height"];
                  n.find(".dropdown-line-height li a").each(function (t, n) {
                    var o = i()(n).data("value") + "" == c + "";
                    e.className = o ? "checked" : "";
                  });
                }
              },
            },
            {
              key: "updateBtnStates",
              value: function (t, e) {
                var n = this;
                i.a.each(e, function (e, o) {
                  n.ui.toggleBtnActive(t.find(e), o());
                });
              },
            },
            {
              key: "tableMoveHandler",
              value: function (t) {
                var e,
                  n = i()(t.target.parentNode),
                  o = n.next(),
                  r = n.find(".note-dimension-picker-mousecatcher"),
                  a = n.find(".note-dimension-picker-highlighted"),
                  s = n.find(".note-dimension-picker-unhighlighted");
                if (void 0 === t.offsetX) {
                  var l = i()(t.target).offset();
                  e = { x: t.pageX - l.left, y: t.pageY - l.top };
                } else e = { x: t.offsetX, y: t.offsetY };
                var c = Math.ceil(e.x / 18) || 1,
                  u = Math.ceil(e.y / 18) || 1;
                a.css({ width: c + "em", height: u + "em" }),
                  r.data("value", c + "x" + u),
                  c > 3 &&
                    c < this.options.insertTableMaxSize.col &&
                    s.css({ width: c + 1 + "em" }),
                  u > 3 &&
                    u < this.options.insertTableMaxSize.row &&
                    s.css({ height: u + 1 + "em" }),
                  o.html(c + " x " + u);
              },
            },
          ]) && ae(e.prototype, n),
          o && ae(e, o),
          t
        );
      })();
      function le(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var ce = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$window = i()(window)),
            (this.$document = i()(document)),
            (this.ui = i.a.summernote.ui),
            (this.$note = e.layoutInfo.note),
            (this.$editor = e.layoutInfo.editor),
            (this.$toolbar = e.layoutInfo.toolbar),
            (this.$editable = e.layoutInfo.editable),
            (this.$statusbar = e.layoutInfo.statusbar),
            (this.options = e.options),
            (this.isFollowing = !1),
            (this.followScroll = this.followScroll.bind(this));
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return !this.options.airMode;
              },
            },
            {
              key: "initialize",
              value: function () {
                var t = this;
                (this.options.toolbar = this.options.toolbar || []),
                  this.options.toolbar.length
                    ? this.context.invoke(
                        "buttons.build",
                        this.$toolbar,
                        this.options.toolbar
                      )
                    : this.$toolbar.hide(),
                  this.options.toolbarContainer &&
                    this.$toolbar.appendTo(this.options.toolbarContainer),
                  this.changeContainer(!1),
                  this.$note.on(
                    "summernote.keyup summernote.mouseup summernote.change",
                    function () {
                      t.context.invoke("buttons.updateCurrentStyle");
                    }
                  ),
                  this.context.invoke("buttons.updateCurrentStyle"),
                  this.options.followingToolbar &&
                    this.$window.on("scroll resize", this.followScroll);
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$toolbar.children().remove(),
                  this.options.followingToolbar &&
                    this.$window.off("scroll resize", this.followScroll);
              },
            },
            {
              key: "followScroll",
              value: function () {
                if (this.$editor.hasClass("fullscreen")) return !1;
                var t = this.$editor.outerHeight(),
                  e = this.$editor.width(),
                  n = this.$toolbar.height(),
                  o = this.$statusbar.height(),
                  r = 0;
                this.options.otherStaticBar &&
                  (r = i()(this.options.otherStaticBar).outerHeight());
                var a = this.$document.scrollTop(),
                  s = this.$editor.offset().top,
                  l = s - r,
                  c = s + t - r - n - o;
                !this.isFollowing && a > l && a < c - n
                  ? ((this.isFollowing = !0),
                    this.$editable.css({
                      marginTop: this.$toolbar.outerHeight(),
                    }),
                    this.$toolbar.css({
                      position: "fixed",
                      top: r,
                      width: e,
                      zIndex: 1e3,
                    }))
                  : this.isFollowing &&
                    (a < l || a > c) &&
                    ((this.isFollowing = !1),
                    this.$toolbar.css({
                      position: "relative",
                      top: 0,
                      width: "100%",
                      zIndex: "auto",
                    }),
                    this.$editable.css({ marginTop: "" }));
              },
            },
            {
              key: "changeContainer",
              value: function (t) {
                t
                  ? this.$toolbar.prependTo(this.$editor)
                  : this.options.toolbarContainer &&
                    this.$toolbar.appendTo(this.options.toolbarContainer),
                  this.options.followingToolbar && this.followScroll();
              },
            },
            {
              key: "updateFullscreen",
              value: function (t) {
                this.ui.toggleBtnActive(
                  this.$toolbar.find(".btn-fullscreen"),
                  t
                ),
                  this.changeContainer(t);
              },
            },
            {
              key: "updateCodeview",
              value: function (t) {
                this.ui.toggleBtnActive(this.$toolbar.find(".btn-codeview"), t),
                  t ? this.deactivate() : this.activate();
              },
            },
            {
              key: "activate",
              value: function (t) {
                var e = this.$toolbar.find("button");
                t || (e = e.not(".note-codeview-keep")),
                  this.ui.toggleBtn(e, !0);
              },
            },
            {
              key: "deactivate",
              value: function (t) {
                var e = this.$toolbar.find("button");
                t || (e = e.not(".note-codeview-keep")),
                  this.ui.toggleBtn(e, !1);
              },
            },
          ]) && le(e.prototype, n),
          o && le(e, o),
          t
        );
      })();
      function ue(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var de = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.ui = i.a.summernote.ui),
            (this.$body = i()(document.body)),
            (this.$editor = e.layoutInfo.editor),
            (this.options = e.options),
            (this.lang = this.options.langInfo),
            e.memo(
              "help.linkDialog.show",
              this.options.langInfo.help["linkDialog.show"]
            );
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                var t = this.options.dialogsInBody
                    ? this.$body
                    : this.options.container,
                  e = [
                    '<div class="form-group note-form-group">',
                    '<label for="note-dialog-link-txt-'
                      .concat(this.options.id, '" class="note-form-label">')
                      .concat(this.lang.link.textToDisplay, "</label>"),
                    '<input id="note-dialog-link-txt-'.concat(
                      this.options.id,
                      '" class="note-link-text form-control note-form-control note-input" type="text"/>'
                    ),
                    "</div>",
                    '<div class="form-group note-form-group">',
                    '<label for="note-dialog-link-url-'
                      .concat(this.options.id, '" class="note-form-label">')
                      .concat(this.lang.link.url, "</label>"),
                    '<input id="note-dialog-link-url-'.concat(
                      this.options.id,
                      '" class="note-link-url form-control note-form-control note-input" type="text" value="http://"/>'
                    ),
                    "</div>",
                    this.options.disableLinkTarget
                      ? ""
                      : i()("<div/>")
                          .append(
                            this.ui
                              .checkbox({
                                className: "sn-checkbox-open-in-new-window",
                                text: this.lang.link.openInNewWindow,
                                checked: !0,
                              })
                              .render()
                          )
                          .html(),
                    i()("<div/>")
                      .append(
                        this.ui
                          .checkbox({
                            className: "sn-checkbox-use-protocol",
                            text: this.lang.link.useProtocol,
                            checked: !0,
                          })
                          .render()
                      )
                      .html(),
                  ].join(""),
                  n = '<input type="button" href="#" class="'
                    .concat(
                      "btn btn-primary note-btn note-btn-primary note-link-btn",
                      '" value="'
                    )
                    .concat(this.lang.link.insert, '" disabled>');
                this.$dialog = this.ui
                  .dialog({
                    className: "link-dialog",
                    title: this.lang.link.insert,
                    fade: this.options.dialogsFade,
                    body: e,
                    footer: n,
                  })
                  .render()
                  .appendTo(t);
              },
            },
            {
              key: "destroy",
              value: function () {
                this.ui.hideDialog(this.$dialog), this.$dialog.remove();
              },
            },
            {
              key: "bindEnterKey",
              value: function (t, e) {
                t.on("keypress", function (t) {
                  t.keyCode === xt.code.ENTER &&
                    (t.preventDefault(), e.trigger("click"));
                });
              },
            },
            {
              key: "toggleLinkBtn",
              value: function (t, e, n) {
                this.ui.toggleBtn(t, e.val() && n.val());
              },
            },
            {
              key: "showLinkDialog",
              value: function (t) {
                var e = this;
                return i.a
                  .Deferred(function (n) {
                    var o = e.$dialog.find(".note-link-text"),
                      i = e.$dialog.find(".note-link-url"),
                      r = e.$dialog.find(".note-link-btn"),
                      a = e.$dialog.find(
                        ".sn-checkbox-open-in-new-window input[type=checkbox]"
                      ),
                      s = e.$dialog.find(
                        ".sn-checkbox-use-protocol input[type=checkbox]"
                      );
                    e.ui.onDialogShown(e.$dialog, function () {
                      e.context.triggerEvent("dialog.shown"),
                        !t.url && g.isValidUrl(t.text) && (t.url = t.text),
                        o
                          .on("input paste propertychange", function () {
                            (t.text = o.val()), e.toggleLinkBtn(r, o, i);
                          })
                          .val(t.text),
                        i
                          .on("input paste propertychange", function () {
                            t.text || o.val(i.val()), e.toggleLinkBtn(r, o, i);
                          })
                          .val(t.url),
                        m.isSupportTouch || i.trigger("focus"),
                        e.toggleLinkBtn(r, o, i),
                        e.bindEnterKey(i, r),
                        e.bindEnterKey(o, r);
                      var l =
                        void 0 !== t.isNewWindow
                          ? t.isNewWindow
                          : e.context.options.linkTargetBlank;
                      a.prop("checked", l);
                      var c = !t.url && e.context.options.useProtocol;
                      s.prop("checked", c),
                        r.one("click", function (r) {
                          r.preventDefault(),
                            n.resolve({
                              range: t.range,
                              url: i.val(),
                              text: o.val(),
                              isNewWindow: a.is(":checked"),
                              checkProtocol: s.is(":checked"),
                            }),
                            e.ui.hideDialog(e.$dialog);
                        });
                    }),
                      e.ui.onDialogHidden(e.$dialog, function () {
                        o.off(),
                          i.off(),
                          r.off(),
                          "pending" === n.state() && n.reject();
                      }),
                      e.ui.showDialog(e.$dialog);
                  })
                  .promise();
              },
            },
            {
              key: "show",
              value: function () {
                var t = this,
                  e = this.context.invoke("editor.getLinkInfo");
                this.context.invoke("editor.saveRange"),
                  this.showLinkDialog(e)
                    .then(function (e) {
                      t.context.invoke("editor.restoreRange"),
                        t.context.invoke("editor.createLink", e);
                    })
                    .fail(function () {
                      t.context.invoke("editor.restoreRange");
                    });
              },
            },
          ]) && ue(e.prototype, n),
          o && ue(e, o),
          t
        );
      })();
      function he(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var fe = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.ui = i.a.summernote.ui),
            (this.options = e.options),
            (this.events = {
              "summernote.keyup summernote.mouseup summernote.change summernote.scroll": function () {
                n.update();
              },
              "summernote.disable summernote.dialog.shown summernote.blur": function () {
                n.hide();
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return !C.isEmpty(this.options.popover.link);
              },
            },
            {
              key: "initialize",
              value: function () {
                this.$popover = this.ui
                  .popover({
                    className: "note-link-popover",
                    callback: function (t) {
                      t.find(".popover-content,.note-popover-content").prepend(
                        '<span><a target="_blank"></a>&nbsp;</span>'
                      );
                    },
                  })
                  .render()
                  .appendTo(this.options.container);
                var t = this.$popover.find(
                  ".popover-content,.note-popover-content"
                );
                this.context.invoke(
                  "buttons.build",
                  t,
                  this.options.popover.link
                ),
                  this.$popover.on("mousedown", function (t) {
                    t.preventDefault();
                  });
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$popover.remove();
              },
            },
            {
              key: "update",
              value: function () {
                if (this.context.invoke("editor.hasFocus")) {
                  var t = this.context.invoke("editor.getLastRange");
                  if (t.isCollapsed() && t.isOnAnchor()) {
                    var e = pt.ancestor(t.sc, pt.isAnchor),
                      n = i()(e).attr("href");
                    this.$popover.find("a").attr("href", n).text(n);
                    var o = pt.posFromPlaceholder(e),
                      r = i()(this.options.container).offset();
                    (o.top -= r.top),
                      (o.left -= r.left),
                      this.$popover.css({
                        display: "block",
                        left: o.left,
                        top: o.top,
                      });
                  } else this.hide();
                } else this.hide();
              },
            },
            {
              key: "hide",
              value: function () {
                this.$popover.hide();
              },
            },
          ]) && he(e.prototype, n),
          o && he(e, o),
          t
        );
      })();
      function pe(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var me = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.ui = i.a.summernote.ui),
            (this.$body = i()(document.body)),
            (this.$editor = e.layoutInfo.editor),
            (this.options = e.options),
            (this.lang = this.options.langInfo);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                var t = "";
                if (this.options.maximumImageFileSize) {
                  var e = Math.floor(
                      Math.log(this.options.maximumImageFileSize) /
                        Math.log(1024)
                    ),
                    n =
                      1 *
                        (
                          this.options.maximumImageFileSize / Math.pow(1024, e)
                        ).toFixed(2) +
                      " " +
                      " KMGTP"[e] +
                      "B";
                  t = "<small>".concat(
                    this.lang.image.maximumFileSize + " : " + n,
                    "</small>"
                  );
                }
                var o = this.options.dialogsInBody
                    ? this.$body
                    : this.options.container,
                  i = [
                    '<div class="form-group note-form-group note-group-select-from-files">',
                    '<label for="note-dialog-image-file-' +
                      this.options.id +
                      '" class="note-form-label">' +
                      this.lang.image.selectFromFiles +
                      "</label>",
                    '<input id="note-dialog-image-file-' +
                      this.options.id +
                      '" class="note-image-input form-control-file note-form-control note-input" ',
                    ' type="file" name="files" accept="image/*" multiple="multiple"/>',
                    t,
                    "</div>",
                    '<div class="form-group note-group-image-url">',
                    '<label for="note-dialog-image-url-' +
                      this.options.id +
                      '" class="note-form-label">' +
                      this.lang.image.url +
                      "</label>",
                    '<input id="note-dialog-image-url-' +
                      this.options.id +
                      '" class="note-image-url form-control note-form-control note-input" type="text"/>',
                    "</div>",
                  ].join(""),
                  r = '<input type="button" href="#" class="'
                    .concat(
                      "btn btn-primary note-btn note-btn-primary note-image-btn",
                      '" value="'
                    )
                    .concat(this.lang.image.insert, '" disabled>');
                this.$dialog = this.ui
                  .dialog({
                    title: this.lang.image.insert,
                    fade: this.options.dialogsFade,
                    body: i,
                    footer: r,
                  })
                  .render()
                  .appendTo(o);
              },
            },
            {
              key: "destroy",
              value: function () {
                this.ui.hideDialog(this.$dialog), this.$dialog.remove();
              },
            },
            {
              key: "bindEnterKey",
              value: function (t, e) {
                t.on("keypress", function (t) {
                  t.keyCode === xt.code.ENTER &&
                    (t.preventDefault(), e.trigger("click"));
                });
              },
            },
            {
              key: "show",
              value: function () {
                var t = this;
                this.context.invoke("editor.saveRange"),
                  this.showImageDialog()
                    .then(function (e) {
                      t.ui.hideDialog(t.$dialog),
                        t.context.invoke("editor.restoreRange"),
                        "string" == typeof e
                          ? t.options.callbacks.onImageLinkInsert
                            ? t.context.triggerEvent("image.link.insert", e)
                            : t.context.invoke("editor.insertImage", e)
                          : t.context.invoke(
                              "editor.insertImagesOrCallback",
                              e
                            );
                    })
                    .fail(function () {
                      t.context.invoke("editor.restoreRange");
                    });
              },
            },
            {
              key: "showImageDialog",
              value: function () {
                var t = this;
                return i.a.Deferred(function (e) {
                  var n = t.$dialog.find(".note-image-input"),
                    o = t.$dialog.find(".note-image-url"),
                    i = t.$dialog.find(".note-image-btn");
                  t.ui.onDialogShown(t.$dialog, function () {
                    t.context.triggerEvent("dialog.shown"),
                      n.replaceWith(
                        n
                          .clone()
                          .on("change", function (t) {
                            e.resolve(t.target.files || t.target.value);
                          })
                          .val("")
                      ),
                      o
                        .on("input paste propertychange", function () {
                          t.ui.toggleBtn(i, o.val());
                        })
                        .val(""),
                      m.isSupportTouch || o.trigger("focus"),
                      i.click(function (t) {
                        t.preventDefault(), e.resolve(o.val());
                      }),
                      t.bindEnterKey(o, i);
                  }),
                    t.ui.onDialogHidden(t.$dialog, function () {
                      n.off(),
                        o.off(),
                        i.off(),
                        "pending" === e.state() && e.reject();
                    }),
                    t.ui.showDialog(t.$dialog);
                });
              },
            },
          ]) && pe(e.prototype, n),
          o && pe(e, o),
          t
        );
      })();
      function ve(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var ge = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.ui = i.a.summernote.ui),
            (this.editable = e.layoutInfo.editable[0]),
            (this.options = e.options),
            (this.events = {
              "summernote.disable summernote.blur": function () {
                n.hide();
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return !C.isEmpty(this.options.popover.image);
              },
            },
            {
              key: "initialize",
              value: function () {
                this.$popover = this.ui
                  .popover({ className: "note-image-popover" })
                  .render()
                  .appendTo(this.options.container);
                var t = this.$popover.find(
                  ".popover-content,.note-popover-content"
                );
                this.context.invoke(
                  "buttons.build",
                  t,
                  this.options.popover.image
                ),
                  this.$popover.on("mousedown", function (t) {
                    t.preventDefault();
                  });
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$popover.remove();
              },
            },
            {
              key: "update",
              value: function (t, e) {
                if (pt.isImg(t)) {
                  var n = i()(t).offset(),
                    o = i()(this.options.container).offset(),
                    r = {};
                  this.options.popatmouse
                    ? ((r.left = e.pageX - 20), (r.top = e.pageY))
                    : (r = n),
                    (r.top -= o.top),
                    (r.left -= o.left),
                    this.$popover.css({
                      display: "block",
                      left: r.left,
                      top: r.top,
                    });
                } else this.hide();
              },
            },
            {
              key: "hide",
              value: function () {
                this.$popover.hide();
              },
            },
          ]) && ve(e.prototype, n),
          o && ve(e, o),
          t
        );
      })();
      function be(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var ye = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.ui = i.a.summernote.ui),
            (this.options = e.options),
            (this.events = {
              "summernote.mousedown": function (t, e) {
                n.update(e.target);
              },
              "summernote.keyup summernote.scroll summernote.change": function () {
                n.update();
              },
              "summernote.disable summernote.blur": function () {
                n.hide();
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return !C.isEmpty(this.options.popover.table);
              },
            },
            {
              key: "initialize",
              value: function () {
                this.$popover = this.ui
                  .popover({ className: "note-table-popover" })
                  .render()
                  .appendTo(this.options.container);
                var t = this.$popover.find(
                  ".popover-content,.note-popover-content"
                );
                this.context.invoke(
                  "buttons.build",
                  t,
                  this.options.popover.table
                ),
                  m.isFF &&
                    document.execCommand("enableInlineTableEditing", !1, !1),
                  this.$popover.on("mousedown", function (t) {
                    t.preventDefault();
                  });
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$popover.remove();
              },
            },
            {
              key: "update",
              value: function (t) {
                if (this.context.isDisabled()) return !1;
                var e = pt.isCell(t);
                if (e) {
                  var n = pt.posFromPlaceholder(t),
                    o = i()(this.options.container).offset();
                  (n.top -= o.top),
                    (n.left -= o.left),
                    this.$popover.css({
                      display: "block",
                      left: n.left,
                      top: n.top,
                    });
                } else this.hide();
                return e;
              },
            },
            {
              key: "hide",
              value: function () {
                this.$popover.hide();
              },
            },
          ]) && be(e.prototype, n),
          o && be(e, o),
          t
        );
      })();
      function ke(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var we = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.ui = i.a.summernote.ui),
            (this.$body = i()(document.body)),
            (this.$editor = e.layoutInfo.editor),
            (this.options = e.options),
            (this.lang = this.options.langInfo);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                var t = this.options.dialogsInBody
                    ? this.$body
                    : this.options.container,
                  e = [
                    '<div class="form-group note-form-group row-fluid">',
                    '<label for="note-dialog-video-url-'
                      .concat(this.options.id, '" class="note-form-label">')
                      .concat(
                        this.lang.video.url,
                        ' <small class="text-muted">'
                      )
                      .concat(this.lang.video.providers, "</small></label>"),
                    '<input id="note-dialog-video-url-'.concat(
                      this.options.id,
                      '" class="note-video-url form-control note-form-control note-input" type="text"/>'
                    ),
                    "</div>",
                  ].join(""),
                  n = '<input type="button" href="#" class="'
                    .concat(
                      "btn btn-primary note-btn note-btn-primary note-video-btn",
                      '" value="'
                    )
                    .concat(this.lang.video.insert, '" disabled>');
                this.$dialog = this.ui
                  .dialog({
                    title: this.lang.video.insert,
                    fade: this.options.dialogsFade,
                    body: e,
                    footer: n,
                  })
                  .render()
                  .appendTo(t);
              },
            },
            {
              key: "destroy",
              value: function () {
                this.ui.hideDialog(this.$dialog), this.$dialog.remove();
              },
            },
            {
              key: "bindEnterKey",
              value: function (t, e) {
                t.on("keypress", function (t) {
                  t.keyCode === xt.code.ENTER &&
                    (t.preventDefault(), e.trigger("click"));
                });
              },
            },
            {
              key: "createVideoNode",
              value: function (t) {
                var e,
                  n = t.match(
                    /\/\/(?:(?:www|m)\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))([\w|-]{11})(?:(?:[\?&]t=)(\S+))?$/
                  ),
                  o = t.match(
                    /(?:www\.|\/\/)instagram\.com\/p\/(.[a-zA-Z0-9_-]*)/
                  ),
                  r = t.match(/\/\/vine\.co\/v\/([a-zA-Z0-9]+)/),
                  a = t.match(
                    /\/\/(player\.)?vimeo\.com\/([a-z]*\/)*(\d+)[?]?.*/
                  ),
                  s = t.match(
                    /.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/
                  ),
                  l = t.match(/\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/),
                  c = t.match(/\/\/v\.qq\.com.*?vid=(.+)/),
                  u = t.match(
                    /\/\/v\.qq\.com\/x?\/?(page|cover).*?\/([^\/]+)\.html\??.*/
                  ),
                  d = t.match(/^.+.(mp4|m4v)$/),
                  h = t.match(/^.+.(ogg|ogv)$/),
                  f = t.match(/^.+.(webm)$/),
                  p = t.match(
                    /(?:www\.|\/\/)facebook\.com\/([^\/]+)\/videos\/([0-9]+)/
                  );
                if (n && 11 === n[1].length) {
                  var m = n[1],
                    v = 0;
                  if (void 0 !== n[2]) {
                    var g = n[2].match(/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/);
                    if (g)
                      for (
                        var b = [3600, 60, 1], y = 0, k = b.length;
                        y < k;
                        y++
                      )
                        v +=
                          void 0 !== g[y + 1]
                            ? b[y] * parseInt(g[y + 1], 10)
                            : 0;
                  }
                  e = i()("<iframe>")
                    .attr("frameborder", 0)
                    .attr(
                      "src",
                      "//www.youtube.com/embed/" +
                        m +
                        (v > 0 ? "?start=" + v : "")
                    )
                    .attr("width", "640")
                    .attr("height", "360");
                } else if (o && o[0].length)
                  e = i()("<iframe>")
                    .attr("frameborder", 0)
                    .attr("src", "https://instagram.com/p/" + o[1] + "/embed/")
                    .attr("width", "612")
                    .attr("height", "710")
                    .attr("scrolling", "no")
                    .attr("allowtransparency", "true");
                else if (r && r[0].length)
                  e = i()("<iframe>")
                    .attr("frameborder", 0)
                    .attr("src", r[0] + "/embed/simple")
                    .attr("width", "600")
                    .attr("height", "600")
                    .attr("class", "vine-embed");
                else if (a && a[3].length)
                  e = i()(
                    "<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>"
                  )
                    .attr("frameborder", 0)
                    .attr("src", "//player.vimeo.com/video/" + a[3])
                    .attr("width", "640")
                    .attr("height", "360");
                else if (s && s[2].length)
                  e = i()("<iframe>")
                    .attr("frameborder", 0)
                    .attr("src", "//www.dailymotion.com/embed/video/" + s[2])
                    .attr("width", "640")
                    .attr("height", "360");
                else if (l && l[1].length)
                  e = i()(
                    "<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>"
                  )
                    .attr("frameborder", 0)
                    .attr("height", "498")
                    .attr("width", "510")
                    .attr("src", "//player.youku.com/embed/" + l[1]);
                else if ((c && c[1].length) || (u && u[2].length)) {
                  var w = c && c[1].length ? c[1] : u[2];
                  e = i()(
                    "<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>"
                  )
                    .attr("frameborder", 0)
                    .attr("height", "310")
                    .attr("width", "500")
                    .attr(
                      "src",
                      "https://v.qq.com/txp/iframe/player.html?vid=" +
                        w +
                        "&amp;auto=0"
                    );
                } else if (d || h || f)
                  e = i()("<video controls>")
                    .attr("src", t)
                    .attr("width", "640")
                    .attr("height", "360");
                else {
                  if (!p || !p[0].length) return !1;
                  e = i()("<iframe>")
                    .attr("frameborder", 0)
                    .attr(
                      "src",
                      "https://www.facebook.com/plugins/video.php?href=" +
                        encodeURIComponent(p[0]) +
                        "&show_text=0&width=560"
                    )
                    .attr("width", "560")
                    .attr("height", "301")
                    .attr("scrolling", "no")
                    .attr("allowtransparency", "true");
                }
                return e.addClass("note-video-clip"), e[0];
              },
            },
            {
              key: "show",
              value: function () {
                var t = this,
                  e = this.context.invoke("editor.getSelectedText");
                this.context.invoke("editor.saveRange"),
                  this.showVideoDialog(e)
                    .then(function (e) {
                      t.ui.hideDialog(t.$dialog),
                        t.context.invoke("editor.restoreRange");
                      var n = t.createVideoNode(e);
                      n && t.context.invoke("editor.insertNode", n);
                    })
                    .fail(function () {
                      t.context.invoke("editor.restoreRange");
                    });
              },
            },
            {
              key: "showVideoDialog",
              value: function () {
                var t = this;
                return i.a.Deferred(function (e) {
                  var n = t.$dialog.find(".note-video-url"),
                    o = t.$dialog.find(".note-video-btn");
                  t.ui.onDialogShown(t.$dialog, function () {
                    t.context.triggerEvent("dialog.shown"),
                      n.on("input paste propertychange", function () {
                        t.ui.toggleBtn(o, n.val());
                      }),
                      m.isSupportTouch || n.trigger("focus"),
                      o.click(function (t) {
                        t.preventDefault(), e.resolve(n.val());
                      }),
                      t.bindEnterKey(n, o);
                  }),
                    t.ui.onDialogHidden(t.$dialog, function () {
                      n.off(), o.off(), "pending" === e.state() && e.reject();
                    }),
                    t.ui.showDialog(t.$dialog);
                });
              },
            },
          ]) && ke(e.prototype, n),
          o && ke(e, o),
          t
        );
      })();
      function Ce(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var xe = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.ui = i.a.summernote.ui),
            (this.$body = i()(document.body)),
            (this.$editor = e.layoutInfo.editor),
            (this.options = e.options),
            (this.lang = this.options.langInfo);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                var t = this.options.dialogsInBody
                    ? this.$body
                    : this.options.container,
                  e = [
                    '<p class="text-center">',
                    '<a href="http://summernote.org/" target="_blank">Summernote 0.8.18</a> · ',
                    '<a href="https://github.com/summernote/summernote" target="_blank">Project</a> · ',
                    '<a href="https://github.com/summernote/summernote/issues" target="_blank">Issues</a>',
                    "</p>",
                  ].join("");
                this.$dialog = this.ui
                  .dialog({
                    title: this.lang.options.help,
                    fade: this.options.dialogsFade,
                    body: this.createShortcutList(),
                    footer: e,
                    callback: function (t) {
                      t.find(".modal-body,.note-modal-body").css({
                        "max-height": 300,
                        overflow: "scroll",
                      });
                    },
                  })
                  .render()
                  .appendTo(t);
              },
            },
            {
              key: "destroy",
              value: function () {
                this.ui.hideDialog(this.$dialog), this.$dialog.remove();
              },
            },
            {
              key: "createShortcutList",
              value: function () {
                var t = this,
                  e = this.options.keyMap[m.isMac ? "mac" : "pc"];
                return Object.keys(e)
                  .map(function (n) {
                    var o = e[n],
                      r = i()('<div><div class="help-list-item"></div></div>');
                    return (
                      r
                        .append(
                          i()("<label><kbd>" + n + "</kdb></label>").css({
                            width: 180,
                            "margin-right": 10,
                          })
                        )
                        .append(
                          i()("<span/>").html(t.context.memo("help." + o) || o)
                        ),
                      r.html()
                    );
                  })
                  .join("");
              },
            },
            {
              key: "showHelpDialog",
              value: function () {
                var t = this;
                return i.a
                  .Deferred(function (e) {
                    t.ui.onDialogShown(t.$dialog, function () {
                      t.context.triggerEvent("dialog.shown"), e.resolve();
                    }),
                      t.ui.showDialog(t.$dialog);
                  })
                  .promise();
              },
            },
            {
              key: "show",
              value: function () {
                var t = this;
                this.context.invoke("editor.saveRange"),
                  this.showHelpDialog().then(function () {
                    t.context.invoke("editor.restoreRange");
                  });
              },
            },
          ]) && Ce(e.prototype, n),
          o && Ce(e, o),
          t
        );
      })();
      function Se(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var Te = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.ui = i.a.summernote.ui),
            (this.options = e.options),
            (this.hidable = !0),
            (this.onContextmenu = !1),
            (this.pageX = null),
            (this.pageY = null),
            (this.events = {
              "summernote.contextmenu": function (t) {
                n.options.editing &&
                  (t.preventDefault(),
                  t.stopPropagation(),
                  (n.onContextmenu = !0),
                  n.update(!0));
              },
              "summernote.mousedown": function (t, e) {
                (n.pageX = e.pageX), (n.pageY = e.pageY);
              },
              "summernote.keyup summernote.mouseup summernote.scroll": function (
                t,
                e
              ) {
                n.options.editing &&
                  !n.onContextmenu &&
                  ((n.pageX = e.pageX), (n.pageY = e.pageY), n.update()),
                  (n.onContextmenu = !1);
              },
              "summernote.disable summernote.change summernote.dialog.shown summernote.blur": function () {
                n.hide();
              },
              "summernote.focusout": function () {
                n.$popover.is(":active,:focus") || n.hide();
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return (
                  this.options.airMode && !C.isEmpty(this.options.popover.air)
                );
              },
            },
            {
              key: "initialize",
              value: function () {
                var t = this;
                this.$popover = this.ui
                  .popover({ className: "note-air-popover" })
                  .render()
                  .appendTo(this.options.container);
                var e = this.$popover.find(".popover-content");
                this.context.invoke(
                  "buttons.build",
                  e,
                  this.options.popover.air
                ),
                  this.$popover.on("mousedown", function () {
                    t.hidable = !1;
                  }),
                  this.$popover.on("mouseup", function () {
                    t.hidable = !0;
                  });
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$popover.remove();
              },
            },
            {
              key: "update",
              value: function (t) {
                var e = this.context.invoke("editor.currentStyle");
                if (!e.range || (e.range.isCollapsed() && !t)) this.hide();
                else {
                  var n = { left: this.pageX, top: this.pageY },
                    o = i()(this.options.container).offset();
                  (n.top -= o.top),
                    (n.left -= o.left),
                    this.$popover.css({
                      display: "block",
                      left: Math.max(n.left, 0) + -5,
                      top: n.top + 5,
                    }),
                    this.context.invoke(
                      "buttons.updateCurrentStyle",
                      this.$popover
                    );
                }
              },
            },
            {
              key: "updateCodeview",
              value: function (t) {
                this.ui.toggleBtnActive(this.$popover.find(".btn-codeview"), t),
                  t && this.hide();
              },
            },
            {
              key: "hide",
              value: function () {
                this.hidable && this.$popover.hide();
              },
            },
          ]) && Se(e.prototype, n),
          o && Se(e, o),
          t
        );
      })();
      function Ee(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1),
            (o.configurable = !0),
            "value" in o && (o.writable = !0),
            Object.defineProperty(t, o.key, o);
        }
      }
      var Ie = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e))
              throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.ui = i.a.summernote.ui),
            (this.$editable = e.layoutInfo.editable),
            (this.options = e.options),
            (this.hint = this.options.hint || []),
            (this.direction = this.options.hintDirection || "bottom"),
            (this.hints = Array.isArray(this.hint) ? this.hint : [this.hint]),
            (this.events = {
              "summernote.keyup": function (t, e) {
                e.isDefaultPrevented() || n.handleKeyup(e);
              },
              "summernote.keydown": function (t, e) {
                n.handleKeydown(e);
              },
              "summernote.disable summernote.dialog.shown summernote.blur": function () {
                n.hide();
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return this.hints.length > 0;
              },
            },
            {
              key: "initialize",
              value: function () {
                var t = this;
                (this.lastWordRange = null),
                  (this.matchingWord = null),
                  (this.$popover = this.ui
                    .popover({
                      className: "note-hint-popover",
                      hideArrow: !0,
                      direction: "",
                    })
                    .render()
                    .appendTo(this.options.container)),
                  this.$popover.hide(),
                  (this.$content = this.$popover.find(
                    ".popover-content,.note-popover-content"
                  )),
                  this.$content.on("click", ".note-hint-item", function (e) {
                    t.$content.find(".active").removeClass("active"),
                      i()(e.currentTarget).addClass("active"),
                      t.replace();
                  }),
                  this.$popover.on("mousedown", function (t) {
                    t.preventDefault();
                  });
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$popover.remove();
              },
            },
            {
              key: "selectItem",
              value: function (t) {
                this.$content.find(".active").removeClass("active"),
                  t.addClass("active"),
                  (this.$content[0].scrollTop =
                    t[0].offsetTop - this.$content.innerHeight() / 2);
              },
            },
            {
              key: "moveDown",
              value: function () {
                var t = this.$content.find(".note-hint-item.active"),
                  e = t.next();
                if (e.length) this.selectItem(e);
                else {
                  var n = t.parent().next();
                  n.length ||
                    (n = this.$content.find(".note-hint-group").first()),
                    this.selectItem(n.find(".note-hint-item").first());
                }
              },
            },
            {
              key: "moveUp",
              value: function () {
                var t = this.$content.find(".note-hint-item.active"),
                  e = t.prev();
                if (e.length) this.selectItem(e);
                else {
                  var n = t.parent().prev();
                  n.length ||
                    (n = this.$content.find(".note-hint-group").last()),
                    this.selectItem(n.find(".note-hint-item").last());
                }
              },
            },
            {
              key: "replace",
              value: function () {
                var t = this.$content.find(".note-hint-item.active");
                if (t.length) {
                  var e = this.nodeFromItem(t);
                  if (
                    null !== this.matchingWord &&
                    0 === this.matchingWord.length
                  )
                    this.lastWordRange.so = this.lastWordRange.eo;
                  else if (
                    null !== this.matchingWord &&
                    this.matchingWord.length > 0 &&
                    !this.lastWordRange.isCollapsed()
                  ) {
                    var n =
                      this.lastWordRange.eo -
                      this.lastWordRange.so -
                      this.matchingWord.length;
                    n > 0 && (this.lastWordRange.so += n);
                  }
                  if (
                    (this.lastWordRange.insertNode(e),
                    "next" === this.options.hintSelect)
                  ) {
                    var o = document.createTextNode("");
                    i()(e).after(o), wt.createFromNodeBefore(o).select();
                  } else wt.createFromNodeAfter(e).select();
                  (this.lastWordRange = null),
                    this.hide(),
                    this.context.invoke("editor.focus");
                }
              },
            },
            {
              key: "nodeFromItem",
              value: function (t) {
                var e = this.hints[t.data("index")],
                  n = t.data("item"),
                  o = e.content ? e.content(n) : n;
                return "string" == typeof o && (o = pt.createText(o)), o;
              },
            },
            {
              key: "createItemTemplates",
              value: function (t, e) {
                var n = this.hints[t];
                return e.map(function (e) {
                  var o = i()('<div class="note-hint-item"/>');
                  return (
                    o.append(n.template ? n.template(e) : e + ""),
                    o.data({ index: t, item: e }),
                    o
                  );
                });
              },
            },
            {
              key: "handleKeydown",
              value: function (t) {
                this.$popover.is(":visible") &&
                  (t.keyCode === xt.code.ENTER
                    ? (t.preventDefault(), this.replace())
                    : t.keyCode === xt.code.UP
                    ? (t.preventDefault(), this.moveUp())
                    : t.keyCode === xt.code.DOWN &&
                      (t.preventDefault(), this.moveDown()));
              },
            },
            {
              key: "searchKeyword",
              value: function (t, e, n) {
                var o = this.hints[t];
                if (o && o.match.test(e) && o.search) {
                  var i = o.match.exec(e);
                  (this.matchingWord = i[0]), o.search(i[1], n);
                } else n();
              },
            },
            {
              key: "createGroup",
              value: function (t, e) {
                var n = this,
                  o = i()(
                    '<div class="note-hint-group note-hint-group-' +
                      t +
                      '"></div>'
                  );
                return (
                  this.searchKeyword(t, e, function (e) {
                    (e = e || []).length &&
                      (o.html(n.createItemTemplates(t, e)), n.show());
                  }),
                  o
                );
              },
            },
            {
              key: "handleKeyup",
              value: function (t) {
                var e = this;
                if (
                  !C.contains(
                    [xt.code.ENTER, xt.code.UP, xt.code.DOWN],
                    t.keyCode
                  )
                ) {
                  var n,
                    o,
                    r = this.context.invoke("editor.getLastRange");
                  if ("words" === this.options.hintMode) {
                    if (
                      ((n = r.getWordsRange(r)),
                      (o = n.toString()),
                      this.hints.forEach(function (t) {
                        if (t.match.test(o))
                          return (n = r.getWordsMatchRange(t.match)), !1;
                      }),
                      !n)
                    )
                      return void this.hide();
                    o = n.toString();
                  } else (n = r.getWordRange()), (o = n.toString());
                  if (this.hints.length && o) {
                    this.$content.empty();
                    var a = g.rect2bnd(C.last(n.getClientRects())),
                      s = i()(this.options.container).offset();
                    a &&
                      ((a.top -= s.top),
                      (a.left -= s.left),
                      this.$popover.hide(),
                      (this.lastWordRange = n),
                      this.hints.forEach(function (t, n) {
                        t.match.test(o) &&
                          e.createGroup(n, o).appendTo(e.$content);
                      }),
                      this.$content
                        .find(".note-hint-item:first")
                        .addClass("active"),
                      "top" === this.direction
                        ? this.$popover.css({
                            left: a.left,
                            top: a.top - this.$popover.outerHeight() - 5,
                          })
                        : this.$popover.css({
                            left: a.left,
                            top: a.top + a.height + 5,
                          }));
                  } else this.hide();
                }
              },
            },
            {
              key: "show",
              value: function () {
                this.$popover.show();
              },
            },
            {
              key: "hide",
              value: function () {
                this.$popover.hide();
              },
            },
          ]) && Ee(e.prototype, n),
          o && Ee(e, o),
          t
        );
      })();
      i.a.summernote = i.a.extend(i.a.summernote, {
        version: "0.8.18",
        plugins: {},
        dom: pt,
        range: wt,
        lists: C,
        options: {
          langInfo: i.a.summernote.lang["en-US"],
          editing: !0,
          modules: {
            editor: Ht,
            clipboard: Bt,
            dropzone: Ot,
            codeview: Kt,
            statusbar: qt,
            fullscreen: Gt,
            handle: Zt,
            hintPopover: Ie,
            autoLink: Jt,
            autoSync: ee,
            autoReplace: oe,
            placeholder: re,
            buttons: se,
            toolbar: ce,
            linkDialog: de,
            linkPopover: fe,
            imageDialog: me,
            imagePopover: ge,
            tablePopover: ye,
            videoDialog: we,
            helpDialog: xe,
            airPopover: Te,
          },
          buttons: {},
          lang: "en-US",
          followingToolbar: !1,
          toolbarPosition: "top",
          otherStaticBar: "",
          codeviewKeepButton: !1,
          toolbar: [
            ["style", ["style"]],
            ["font", ["bold", "underline", "clear"]],
            ["fontname", ["fontname"]],
            ["color", ["color"]],
            ["para", ["ul", "ol", "paragraph"]],
            ["table", ["table"]],
            ["insert", ["link", "picture", "video"]],
            ["view", ["fullscreen", "codeview", "help"]],
          ],
          popatmouse: !0,
          popover: {
            image: [
              [
                "resize",
                ["resizeFull", "resizeHalf", "resizeQuarter", "resizeNone"],
              ],
              ["float", ["floatLeft", "floatRight", "floatNone"]],
              ["remove", ["removeMedia"]],
            ],
            link: [["link", ["linkDialogShow", "unlink"]]],
            table: [
              ["add", ["addRowDown", "addRowUp", "addColLeft", "addColRight"]],
              ["delete", ["deleteRow", "deleteCol", "deleteTable"]],
            ],
            air: [
              ["color", ["color"]],
              ["font", ["bold", "underline", "clear"]],
              ["para", ["ul", "paragraph"]],
              ["table", ["table"]],
              ["insert", ["link", "picture"]],
              ["view", ["fullscreen", "codeview"]],
            ],
          },
          airMode: !1,
          overrideContextMenu: !1,
          width: null,
          height: null,
          linkTargetBlank: !0,
          useProtocol: !0,
          defaultProtocol: "http://",
          focus: !1,
          tabDisabled: !1,
          tabSize: 4,
          styleWithCSS: !1,
          shortcuts: !0,
          textareaAutoSync: !0,
          tooltip: "auto",
          container: null,
          maxTextLength: 0,
          blockquoteBreakingLevel: 2,
          spellCheck: !0,
          disableGrammar: !1,
          placeholder: null,
          inheritPlaceholder: !1,
          recordEveryKeystroke: !1,
          historyLimit: 200,
          showDomainOnlyForAutolink: !1,
          hintMode: "word",
          hintSelect: "after",
          hintDirection: "bottom",
          styleTags: [
            "p",
            "blockquote",
            "pre",
            "h1",
            "h2",
            "h3",
            "h4",
            "h5",
            "h6",
          ],
          fontNames: [
            "Arial",
            "Arial Black",
            "Comic Sans MS",
            "Courier New",
            "Helvetica Neue",
            "Helvetica",
            "Impact",
            "Lucida Grande",
            "Tahoma",
            "Times New Roman",
            "Verdana",
          ],
          fontNamesIgnoreCheck: [],
          addDefaultFonts: !0,
          fontSizes: ["8", "9", "10", "11", "12", "14", "18", "24", "36"],
          fontSizeUnits: ["px", "pt"],
          colors: [
            [
              "#000000",
              "#424242",
              "#636363",
              "#9C9C94",
              "#CEC6CE",
              "#EFEFEF",
              "#F7F7F7",
              "#FFFFFF",
            ],
            [
              "#FF0000",
              "#FF9C00",
              "#FFFF00",
              "#00FF00",
              "#00FFFF",
              "#0000FF",
              "#9C00FF",
              "#FF00FF",
            ],
            [
              "#F7C6CE",
              "#FFE7CE",
              "#FFEFC6",
              "#D6EFD6",
              "#CEDEE7",
              "#CEE7F7",
              "#D6D6E7",
              "#E7D6DE",
            ],
            [
              "#E79C9C",
              "#FFC69C",
              "#FFE79C",
              "#B5D6A5",
              "#A5C6CE",
              "#9CC6EF",
              "#B5A5D6",
              "#D6A5BD",
            ],
            [
              "#E76363",
              "#F7AD6B",
              "#FFD663",
              "#94BD7B",
              "#73A5AD",
              "#6BADDE",
              "#8C7BC6",
              "#C67BA5",
            ],
            [
              "#CE0000",
              "#E79439",
              "#EFC631",
              "#6BA54A",
              "#4A7B8C",
              "#3984C6",
              "#634AA5",
              "#A54A7B",
            ],
            [
              "#9C0000",
              "#B56308",
              "#BD9400",
              "#397B21",
              "#104A5A",
              "#085294",
              "#311873",
              "#731842",
            ],
            [
              "#630000",
              "#7B3900",
              "#846300",
              "#295218",
              "#083139",
              "#003163",
              "#21104A",
              "#4A1031",
            ],
          ],
          colorsName: [
            [
              "Black",
              "Tundora",
              "Dove Gray",
              "Star Dust",
              "Pale Slate",
              "Gallery",
              "Alabaster",
              "White",
            ],
            [
              "Red",
              "Orange Peel",
              "Yellow",
              "Green",
              "Cyan",
              "Blue",
              "Electric Violet",
              "Magenta",
            ],
            [
              "Azalea",
              "Karry",
              "Egg White",
              "Zanah",
              "Botticelli",
              "Tropical Blue",
              "Mischka",
              "Twilight",
            ],
            [
              "Tonys Pink",
              "Peach Orange",
              "Cream Brulee",
              "Sprout",
              "Casper",
              "Perano",
              "Cold Purple",
              "Careys Pink",
            ],
            [
              "Mandy",
              "Rajah",
              "Dandelion",
              "Olivine",
              "Gulf Stream",
              "Viking",
              "Blue Marguerite",
              "Puce",
            ],
            [
              "Guardsman Red",
              "Fire Bush",
              "Golden Dream",
              "Chelsea Cucumber",
              "Smalt Blue",
              "Boston Blue",
              "Butterfly Bush",
              "Cadillac",
            ],
            [
              "Sangria",
              "Mai Tai",
              "Buddha Gold",
              "Forest Green",
              "Eden",
              "Venice Blue",
              "Meteorite",
              "Claret",
            ],
            [
              "Rosewood",
              "Cinnamon",
              "Olive",
              "Parsley",
              "Tiber",
              "Midnight Blue",
              "Valentino",
              "Loulou",
            ],
          ],
          colorButton: { foreColor: "#000000", backColor: "#FFFF00" },
          lineHeights: ["1.0", "1.2", "1.4", "1.5", "1.6", "1.8", "2.0", "3.0"],
          tableClassName: "table table-bordered",
          insertTableMaxSize: { col: 10, row: 10 },
          dialogsInBody: !1,
          dialogsFade: !1,
          maximumImageFileSize: null,
          callbacks: {
            onBeforeCommand: null,
            onBlur: null,
            onBlurCodeview: null,
            onChange: null,
            onChangeCodeview: null,
            onDialogShown: null,
            onEnter: null,
            onFocus: null,
            onImageLinkInsert: null,
            onImageUpload: null,
            onImageUploadError: null,
            onInit: null,
            onKeydown: null,
            onKeyup: null,
            onMousedown: null,
            onMouseup: null,
            onPaste: null,
            onScroll: null,
          },
          codemirror: { mode: "text/html", htmlMode: !0, lineNumbers: !0 },
          codeviewFilter: !1,
          codeviewFilterRegex: /<\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi,
          codeviewIframeFilter: !0,
          codeviewIframeWhitelistSrc: [],
          codeviewIframeWhitelistSrcBase: [
            "www.youtube.com",
            "www.youtube-nocookie.com",
            "www.facebook.com",
            "vine.co",
            "instagram.com",
            "player.vimeo.com",
            "www.dailymotion.com",
            "player.youku.com",
            "v.qq.com",
          ],
          keyMap: {
            pc: {
              ESC: "escape",
              ENTER: "insertParagraph",
              "CTRL+Z": "undo",
              "CTRL+Y": "redo",
              TAB: "tab",
              "SHIFT+TAB": "untab",
              "CTRL+B": "bold",
              "CTRL+I": "italic",
              "CTRL+U": "underline",
              "CTRL+SHIFT+S": "strikethrough",
              "CTRL+BACKSLASH": "removeFormat",
              "CTRL+SHIFT+L": "justifyLeft",
              "CTRL+SHIFT+E": "justifyCenter",
              "CTRL+SHIFT+R": "justifyRight",
              "CTRL+SHIFT+J": "justifyFull",
              "CTRL+SHIFT+NUM7": "insertUnorderedList",
              "CTRL+SHIFT+NUM8": "insertOrderedList",
              "CTRL+LEFTBRACKET": "outdent",
              "CTRL+RIGHTBRACKET": "indent",
              "CTRL+NUM0": "formatPara",
              "CTRL+NUM1": "formatH1",
              "CTRL+NUM2": "formatH2",
              "CTRL+NUM3": "formatH3",
              "CTRL+NUM4": "formatH4",
              "CTRL+NUM5": "formatH5",
              "CTRL+NUM6": "formatH6",
              "CTRL+ENTER": "insertHorizontalRule",
              "CTRL+K": "linkDialog.show",
            },
            mac: {
              ESC: "escape",
              ENTER: "insertParagraph",
              "CMD+Z": "undo",
              "CMD+SHIFT+Z": "redo",
              TAB: "tab",
              "SHIFT+TAB": "untab",
              "CMD+B": "bold",
              "CMD+I": "italic",
              "CMD+U": "underline",
              "CMD+SHIFT+S": "strikethrough",
              "CMD+BACKSLASH": "removeFormat",
              "CMD+SHIFT+L": "justifyLeft",
              "CMD+SHIFT+E": "justifyCenter",
              "CMD+SHIFT+R": "justifyRight",
              "CMD+SHIFT+J": "justifyFull",
              "CMD+SHIFT+NUM7": "insertUnorderedList",
              "CMD+SHIFT+NUM8": "insertOrderedList",
              "CMD+LEFTBRACKET": "outdent",
              "CMD+RIGHTBRACKET": "indent",
              "CMD+NUM0": "formatPara",
              "CMD+NUM1": "formatH1",
              "CMD+NUM2": "formatH2",
              "CMD+NUM3": "formatH3",
              "CMD+NUM4": "formatH4",
              "CMD+NUM5": "formatH5",
              "CMD+NUM6": "formatH6",
              "CMD+ENTER": "insertHorizontalRule",
              "CMD+K": "linkDialog.show",
            },
          },
          icons: {
            align: "note-icon-align",
            alignCenter: "note-icon-align-center",
            alignJustify: "note-icon-align-justify",
            alignLeft: "note-icon-align-left",
            alignRight: "note-icon-align-right",
            rowBelow: "note-icon-row-below",
            colBefore: "note-icon-col-before",
            colAfter: "note-icon-col-after",
            rowAbove: "note-icon-row-above",
            rowRemove: "note-icon-row-remove",
            colRemove: "note-icon-col-remove",
            indent: "note-icon-align-indent",
            outdent: "note-icon-align-outdent",
            arrowsAlt: "note-icon-arrows-alt",
            bold: "note-icon-bold",
            caret: "note-icon-caret",
            circle: "note-icon-circle",
            close: "note-icon-close",
            code: "note-icon-code",
            eraser: "note-icon-eraser",
            floatLeft: "note-icon-float-left",
            floatRight: "note-icon-float-right",
            font: "note-icon-font",
            frame: "note-icon-frame",
            italic: "note-icon-italic",
            link: "note-icon-link",
            unlink: "note-icon-chain-broken",
            magic: "note-icon-magic",
            menuCheck: "note-icon-menu-check",
            minus: "note-icon-minus",
            orderedlist: "note-icon-orderedlist",
            pencil: "note-icon-pencil",
            picture: "note-icon-picture",
            question: "note-icon-question",
            redo: "note-icon-redo",
            rollback: "note-icon-rollback",
            square: "note-icon-square",
            strikethrough: "note-icon-strikethrough",
            subscript: "note-icon-subscript",
            superscript: "note-icon-superscript",
            table: "note-icon-table",
            textHeight: "note-icon-text-height",
            trash: "note-icon-trash",
            underline: "note-icon-underline",
            undo: "note-icon-undo",
            unorderedlist: "note-icon-unorderedlist",
            video: "note-icon-video",
          },
        },
      });
    },
    4: function (t, e, n) {},
    52: function (t, e, n) {
      "use strict";
      n.r(e);
      var o = n(0),
        i = n.n(o),
        r = n(1);
      function a(t) {
        return (a =
          "function" == typeof Symbol && "symbol" == typeof Symbol.iterator
            ? function (t) {
                return typeof t;
              }
            : function (t) {
                return t &&
                  "function" == typeof Symbol &&
                  t.constructor === Symbol &&
                  t !== Symbol.prototype
                  ? "symbol"
                  : typeof t;
              })(t);
      }
      var s = r.a.create(
          '<div class="note-editor note-frame panel panel-default"/>'
        ),
        l = r.a.create(
          '<div class="panel-heading note-toolbar" role="toolbar"/>'
        ),
        c = r.a.create('<div class="note-editing-area"/>'),
        u = r.a.create(
          '<textarea class="note-codable" aria-multiline="true"/>'
        ),
        d = r.a.create(
          '<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"/>'
        ),
        h = r.a.create(
          [
            '<output class="note-status-output" role="status" aria-live="polite"></output>',
            '<div class="note-statusbar" role="status">',
            '<div class="note-resizebar" aria-label="Resize">',
            '<div class="note-icon-bar"></div>',
            '<div class="note-icon-bar"></div>',
            '<div class="note-icon-bar"></div>',
            "</div>",
            "</div>",
          ].join("")
        ),
        f = r.a.create('<div class="note-editor note-airframe"/>'),
        p = r.a.create(
          [
            '<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"></div>',
            '<output class="note-status-output" role="status" aria-live="polite"></output>',
          ].join("")
        ),
        m = r.a.create('<div class="note-btn-group btn-group">'),
        v = r.a.create(
          '<ul class="note-dropdown-menu dropdown-menu">',
          function (t, e) {
            var n = Array.isArray(e.items)
              ? e.items
                  .map(function (t) {
                    var n = "string" == typeof t ? t : t.value || "",
                      o = e.template ? e.template(t) : t,
                      i = "object" === a(t) ? t.option : void 0;
                    return (
                      '<li aria-label="' +
                      n +
                      '"><a href="#" ' +
                      ('data-value="' +
                        n +
                        '"' +
                        (void 0 !== i ? ' data-option="' + i + '"' : "")) +
                      ">" +
                      o +
                      "</a></li>"
                    );
                  })
                  .join("")
              : e.items;
            t.html(n).attr({ "aria-label": e.title }),
              e && e.codeviewKeepButton && t.addClass("note-codeview-keep");
          }
        ),
        g = function (t, e) {
          return t + " " + C(e.icons.caret, "span");
        },
        b = r.a.create(
          '<ul class="note-dropdown-menu dropdown-menu note-check">',
          function (t, e) {
            var n = Array.isArray(e.items)
              ? e.items
                  .map(function (t) {
                    var n = "string" == typeof t ? t : t.value || "",
                      o = e.template ? e.template(t) : t;
                    return (
                      '<li aria-label="' +
                      t +
                      '"><a href="#" data-value="' +
                      n +
                      '">' +
                      C(e.checkClassName) +
                      " " +
                      o +
                      "</a></li>"
                    );
                  })
                  .join("")
              : e.items;
            t.html(n).attr({ "aria-label": e.title }),
              e && e.codeviewKeepButton && t.addClass("note-codeview-keep");
          }
        ),
        y = r.a.create(
          '<div class="modal note-modal" aria-hidden="false" tabindex="-1" role="dialog"/>',
          function (t, e) {
            e.fade && t.addClass("fade"),
              t.attr({ "aria-label": e.title }),
              t.html(
                [
                  '<div class="modal-dialog">',
                  '<div class="modal-content">',
                  e.title
                    ? '<div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close" aria-hidden="true">&times;</button><h4 class="modal-title">' +
                      e.title +
                      "</h4></div>"
                    : "",
                  '<div class="modal-body">' + e.body + "</div>",
                  e.footer
                    ? '<div class="modal-footer">' + e.footer + "</div>"
                    : "",
                  "</div>",
                  "</div>",
                ].join("")
              );
          }
        ),
        k = r.a.create(
          [
            '<div class="note-popover popover in">',
            '<div class="arrow"></div>',
            '<div class="popover-content note-children-container"></div>',
            "</div>",
          ].join(""),
          function (t, e) {
            var n = void 0 !== e.direction ? e.direction : "bottom";
            t.addClass(n), e.hideArrow && t.find(".arrow").hide();
          }
        ),
        w = r.a.create('<div class="checkbox"></div>', function (t, e) {
          t.html(
            [
              "<label" + (e.id ? ' for="note-' + e.id + '"' : "") + ">",
              '<input type="checkbox"' +
                (e.id ? ' id="note-' + e.id + '"' : ""),
              e.checked ? " checked" : "",
              ' aria-checked="' + (e.checked ? "true" : "false") + '"/>',
              e.text ? e.text : "",
              "</label>",
            ].join("")
          );
        }),
        C = function (t, e) {
          return "<" + (e = e || "i") + ' class="' + t + '"></' + e + ">";
        },
        x = function (t) {
          return {
            editor: s,
            toolbar: l,
            editingArea: c,
            codable: u,
            editable: d,
            statusbar: h,
            airEditor: f,
            airEditable: p,
            buttonGroup: m,
            dropdown: v,
            dropdownButtonContents: g,
            dropdownCheck: b,
            dialog: y,
            popover: k,
            checkbox: w,
            icon: C,
            options: t,
            palette: function (e, n) {
              return r.a.create(
                '<div class="note-color-palette"/>',
                function (e, n) {
                  for (var o = [], i = 0, r = n.colors.length; i < r; i++) {
                    for (
                      var a = n.eventName,
                        s = n.colors[i],
                        l = n.colorsName[i],
                        c = [],
                        u = 0,
                        d = s.length;
                      u < d;
                      u++
                    ) {
                      var h = s[u],
                        f = l[u];
                      c.push(
                        [
                          '<button type="button" class="note-color-btn"',
                          'style="background-color:',
                          h,
                          '" ',
                          'data-event="',
                          a,
                          '" ',
                          'data-value="',
                          h,
                          '" ',
                          'title="',
                          f,
                          '" ',
                          'aria-label="',
                          f,
                          '" ',
                          'data-toggle="button" tabindex="-1"></button>',
                        ].join("")
                      );
                    }
                    o.push(
                      '<div class="note-color-row">' + c.join("") + "</div>"
                    );
                  }
                  e.html(o.join("")),
                    n.tooltip &&
                      e
                        .find(".note-color-btn")
                        .tooltip({
                          container: n.container || t.container,
                          trigger: "hover",
                          placement: "bottom",
                        });
                }
              )(e, n);
            },
            button: function (e, n) {
              return r.a.create(
                '<button type="button" class="note-btn btn btn-default btn-sm" tabindex="-1">',
                function (e, n) {
                  n &&
                    n.tooltip &&
                    e
                      .attr({ title: n.tooltip, "aria-label": n.tooltip })
                      .tooltip({
                        container: n.container || t.container,
                        trigger: "hover",
                        placement: "bottom",
                      })
                      .on("click", function (t) {
                        i()(t.currentTarget).tooltip("hide");
                      }),
                    n && n.codeviewButton && e.addClass("note-codeview-keep");
                }
              )(e, n);
            },
            toggleBtn: function (t, e) {
              t.toggleClass("disabled", !e), t.attr("disabled", !e);
            },
            toggleBtnActive: function (t, e) {
              t.toggleClass("active", e);
            },
            onDialogShown: function (t, e) {
              t.one("shown.bs.modal", e);
            },
            onDialogHidden: function (t, e) {
              t.one("hidden.bs.modal", e);
            },
            showDialog: function (t) {
              t.modal("show");
            },
            hideDialog: function (t) {
              t.modal("hide");
            },
            createLayout: function (e) {
              var n = (t.airMode
                ? f([c([u(), p()])])
                : "bottom" === t.toolbarPosition
                ? s([c([u(), d()]), l(), h()])
                : s([l(), c([u(), d()]), h()])
              ).render();
              return (
                n.insertAfter(e),
                {
                  note: e,
                  editor: n,
                  toolbar: n.find(".note-toolbar"),
                  editingArea: n.find(".note-editing-area"),
                  editable: n.find(".note-editable"),
                  codable: n.find(".note-codable"),
                  statusbar: n.find(".note-statusbar"),
                }
              );
            },
            removeLayout: function (t, e) {
              t.html(e.editable.html()), e.editor.remove(), t.show();
            },
          };
        };
      n(3), n(4);
      i.a.summernote = i.a.extend(i.a.summernote, {
        ui_template: x,
        interface: "bs3",
      });
    },
  });
});
